diff --git a/src/engine/cache_engine.c b/src/engine/cache_engine.c index c2465a9..6881b4c 100644 --- a/src/engine/cache_engine.c +++ b/src/engine/cache_engine.c @@ -138,7 +138,7 @@ const char *ocf_get_io_iface_name(ocf_req_cache_mode_t cache_mode) return cache_mode_io_if_map[cache_mode]->name; } -static ocf_engine_cb ocf_io_if_type_to_engine_cb( +static ocf_req_cb ocf_io_if_type_to_engine_cb( enum ocf_io_if_type io_if_type, int rw) { if (unlikely(io_if_type == OCF_IO_MAX_IF || @@ -149,7 +149,7 @@ static ocf_engine_cb ocf_io_if_type_to_engine_cb( return IO_IFS[io_if_type].cbs[rw]; } -static ocf_engine_cb ocf_cache_mode_to_engine_cb( +static ocf_req_cb ocf_cache_mode_to_engine_cb( ocf_req_cache_mode_t req_cache_mode, int rw) { if (req_cache_mode == ocf_req_cache_mode_max) @@ -271,7 +271,7 @@ int ocf_engine_hndl_req(struct ocf_request *req) int ocf_engine_hndl_fast_req(struct ocf_request *req) { - ocf_engine_cb engine_cb; + ocf_req_cb engine_cb; int ret; engine_cb = ocf_cache_mode_to_engine_cb(req->cache_mode, req->rw); diff --git a/src/engine/cache_engine.h b/src/engine/cache_engine.h index 6e211de..88c6da4 100644 --- a/src/engine/cache_engine.h +++ b/src/engine/cache_engine.h @@ -7,42 +7,22 @@ #ifndef __CACHE_ENGINE_H_ #define __CACHE_ENGINE_H_ +#include "../ocf_request.h" + struct ocf_thread_priv; -struct ocf_request; #define LOOKUP_HIT 5 #define LOOKUP_MISS 6 #define LOOKUP_REMAPPED 8 -typedef enum { - /* modes inherited from user API */ - ocf_req_cache_mode_wt = ocf_cache_mode_wt, - ocf_req_cache_mode_wb = ocf_cache_mode_wb, - ocf_req_cache_mode_wa = ocf_cache_mode_wa, - ocf_req_cache_mode_pt = ocf_cache_mode_pt, - ocf_req_cache_mode_wi = ocf_cache_mode_wi, - ocf_req_cache_mode_wo = ocf_cache_mode_wo, - - /* internal modes */ - ocf_req_cache_mode_fast, - /*!< Fast path */ - ocf_req_cache_mode_d2c, - /*!< Direct to Core - pass through to core without - touching cacheline metadata */ - - ocf_req_cache_mode_max, -} ocf_req_cache_mode_t; - static inline ocf_req_cache_mode_t ocf_cache_mode_to_req_cache_mode( ocf_cache_mode_t mode) { return (ocf_req_cache_mode_t)mode; } -typedef int (*ocf_engine_cb)(struct ocf_request *req); - struct ocf_io_if { - ocf_engine_cb cbs[2]; /* READ and WRITE */ + ocf_req_cb cbs[2]; /* READ and WRITE */ const char *name; }; diff --git a/src/engine/engine_common.c b/src/engine/engine_common.c index 24643f6..fab760c 100644 --- a/src/engine/engine_common.c +++ b/src/engine/engine_common.c @@ -1,6 +1,6 @@ /* * Copyright(c) 2012-2022 Intel Corporation - * Copyright(c) 2024 Huawei Technologies Co., Ltd. + * Copyright(c) 2024 Huawei Technologies * SPDX-License-Identifier: BSD-3-Clause */ @@ -645,11 +645,11 @@ void ocf_engine_push_req_front(struct ocf_request *req, bool allow_sync) } void ocf_engine_push_req_front_cb(struct ocf_request *req, - ocf_engine_cb engine_cb, + ocf_req_cb req_cb, bool allow_sync) { req->error = 0; /* Please explain why!!! */ - req->engine_handler = engine_cb; + req->engine_handler = req_cb; ocf_engine_push_req_front(req, allow_sync); } diff --git a/src/engine/engine_common.h b/src/engine/engine_common.h index 6f9c73f..fa30f2a 100644 --- a/src/engine/engine_common.h +++ b/src/engine/engine_common.h @@ -1,5 +1,6 @@ /* * Copyright(c) 2012-2022 Intel Corporation + * Copyright(c) 2024 Huawei Technologies * SPDX-License-Identifier: BSD-3-Clause */ @@ -309,7 +310,7 @@ void ocf_engine_push_req_front(struct ocf_request *req, from push function in caller context */ void ocf_engine_push_req_front_cb(struct ocf_request *req, - ocf_engine_cb engine_cb, + ocf_req_cb req_cb, bool allow_sync); void inc_fallback_pt_error_counter(ocf_cache_t cache); diff --git a/src/ocf_request.h b/src/ocf_request.h index 5e05139..5357176 100644 --- a/src/ocf_request.h +++ b/src/ocf_request.h @@ -9,9 +9,27 @@ #include "ocf_env.h" #include "ocf_io_priv.h" -#include "engine/cache_engine.h" #include "metadata/metadata_structs.h" +typedef enum { + /* modes inherited from user API */ + ocf_req_cache_mode_wt = ocf_cache_mode_wt, + ocf_req_cache_mode_wb = ocf_cache_mode_wb, + ocf_req_cache_mode_wa = ocf_cache_mode_wa, + ocf_req_cache_mode_pt = ocf_cache_mode_pt, + ocf_req_cache_mode_wi = ocf_cache_mode_wi, + ocf_req_cache_mode_wo = ocf_cache_mode_wo, + + /* internal modes */ + ocf_req_cache_mode_fast, + /*!< Fast path */ + ocf_req_cache_mode_d2c, + /*!< Direct to Core - pass through to core without + touching cacheline metadata */ + + ocf_req_cache_mode_max, +} ocf_req_cache_mode_t; + struct ocf_req_allocator; struct ocf_req_info { @@ -94,6 +112,12 @@ struct ocf_req_discard_info { /*!< Number of processed sector during discard operation */ }; +/** + * @brief OCF IO engine handler callback + */ +struct ocf_request; +typedef int (*ocf_req_cb)(struct ocf_request *req); + /** * @brief OCF IO request */ @@ -129,7 +153,7 @@ struct ocf_request { ocf_core_t core; /*!< Handle to core instance */ - ocf_engine_cb engine_handler; + ocf_req_cb engine_handler; /*!< IO engine handler */ void *priv;