commit
d24e7bac5d
@ -185,7 +185,7 @@ static void ocf_engine_update_req_info(struct ocf_cache *cache,
|
|||||||
req->info.seq_no++;
|
req->info.seq_no++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ocf_engine_set_hot(struct ocf_request *req)
|
void ocf_engine_set_hot(struct ocf_request *req)
|
||||||
{
|
{
|
||||||
struct ocf_cache *cache = req->cache;
|
struct ocf_cache *cache = req->cache;
|
||||||
struct ocf_map_info *entry;
|
struct ocf_map_info *entry;
|
||||||
@ -208,7 +208,7 @@ static void ocf_engine_set_hot(struct ocf_request *req)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ocf_engine_lookup(struct ocf_request *req)
|
void ocf_engine_lookup(struct ocf_request *req)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
uint64_t core_line;
|
uint64_t core_line;
|
||||||
|
@ -234,6 +234,15 @@ struct ocf_engine_callbacks
|
|||||||
*/
|
*/
|
||||||
int ocf_engine_prepare_clines(struct ocf_request *req);
|
int ocf_engine_prepare_clines(struct ocf_request *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the OCF request is mapped to cache (lookup cache)
|
||||||
|
*
|
||||||
|
* @note This function checks if there is a HIT without updating hotness info
|
||||||
|
*
|
||||||
|
* @param req OCF request
|
||||||
|
*/
|
||||||
|
void ocf_engine_lookup(struct ocf_request *req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Traverse OCF request (lookup cache)
|
* @brief Traverse OCF request (lookup cache)
|
||||||
*
|
*
|
||||||
@ -285,4 +294,6 @@ void inc_fallback_pt_error_counter(ocf_cache_t cache);
|
|||||||
|
|
||||||
void ocf_engine_on_resume(struct ocf_request *req);
|
void ocf_engine_on_resume(struct ocf_request *req);
|
||||||
|
|
||||||
|
void ocf_engine_set_hot(struct ocf_request *req);
|
||||||
|
|
||||||
#endif /* ENGINE_COMMON_H_ */
|
#endif /* ENGINE_COMMON_H_ */
|
||||||
|
@ -156,6 +156,8 @@ static int _ocf_discard_step_do(struct ocf_request *req)
|
|||||||
ocf_hb_req_prot_unlock_wr(req);
|
ocf_hb_req_prot_unlock_wr(req);
|
||||||
|
|
||||||
if (req->info.flush_metadata) {
|
if (req->info.flush_metadata) {
|
||||||
|
env_atomic_inc(&req->req_remaining);
|
||||||
|
|
||||||
/* Request was dirty and need to flush metadata */
|
/* Request was dirty and need to flush metadata */
|
||||||
ocf_metadata_flush_do_asynch(cache, req,
|
ocf_metadata_flush_do_asynch(cache, req,
|
||||||
_ocf_discard_step_complete);
|
_ocf_discard_step_complete);
|
||||||
@ -209,7 +211,7 @@ static int _ocf_discard_step(struct ocf_request *req)
|
|||||||
ocf_hb_req_prot_lock_rd(req);
|
ocf_hb_req_prot_lock_rd(req);
|
||||||
|
|
||||||
/* Travers to check if request is mapped fully */
|
/* Travers to check if request is mapped fully */
|
||||||
ocf_engine_traverse(req);
|
ocf_engine_lookup(req);
|
||||||
|
|
||||||
if (ocf_engine_mapped_count(req)) {
|
if (ocf_engine_mapped_count(req)) {
|
||||||
/* Some cache line are mapped, lock request for WRITE access */
|
/* Some cache line are mapped, lock request for WRITE access */
|
||||||
|
Loading…
Reference in New Issue
Block a user