Refactor cleaning policy initialization

Extract cleaning policy initialization to a separate function

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
This commit is contained in:
Michal Mielewczyk 2021-10-05 09:10:05 +02:00
parent 6d4e6af5b6
commit 390e80794d

View File

@ -534,12 +534,60 @@ static void _ocf_mngt_rebuild_metadata(ocf_cache_t cache, bool initialized)
ocf_metadata_end_exclusive_access(&cache->metadata.lock);
}
static void _ocf_mngt_recovery_rebuild_metadata(ocf_cache_t cache)
{
_ocf_mngt_rebuild_metadata(cache, false);
}
static void _ocf_mngt_bind_rebuild_metadata(ocf_cache_t cache)
{
ocf_cleaning_t clean_policy = cache->conf_meta->cleaning_policy_type;
cache->conf_meta->cleaning_policy_type = ocf_cleaning_nop;
_ocf_mngt_rebuild_metadata(cache, true);
cache->conf_meta->cleaning_policy_type = clean_policy;
}
static inline ocf_error_t _ocf_init_cleaning_policy(ocf_cache_t cache,
ocf_cleaning_t cleaning_policy,
enum ocf_metadata_shutdown_status shutdown_status)
{
ocf_error_t result;
if (shutdown_status == ocf_metadata_clean_shutdown)
result = ocf_cleaning_initialize(cache, cleaning_policy, 0);
else
result = ocf_cleaning_initialize(cache, cleaning_policy, 1);
if (result)
ocf_cache_log(cache, log_err, "Cannot initialize cleaning policy\n");
return result;
}
static void _ocf_mngt_activate_init_cleaning(ocf_pipeline_t pipeline,
void *priv, ocf_pipeline_arg_t arg)
{
struct ocf_cache_attach_context *context = priv;
ocf_cache_t cache = context->cache;
ocf_error_t result;
result = _ocf_init_cleaning_policy(cache,
cache->conf_meta->cleaning_policy_type,
context->metadata.shutdown_status);
if (result)
OCF_PL_FINISH_RET(pipeline, result);
ocf_pipeline_next(pipeline);
}
static void _ocf_mngt_load_post_metadata_load(ocf_pipeline_t pipeline,
void *priv, ocf_pipeline_arg_t arg)
{
struct ocf_cache_attach_context *context = priv;
ocf_cache_t cache = context->cache;
ocf_cleaning_t cleaning_policy;
ocf_error_t result;
if (context->metadata.shutdown_status != ocf_metadata_clean_shutdown) {
@ -547,18 +595,12 @@ static void _ocf_mngt_load_post_metadata_load(ocf_pipeline_t pipeline,
__populate_free_safe(cache);
}
cleaning_policy = cache->conf_meta->cleaning_policy_type;
result = _ocf_init_cleaning_policy(cache,
cache->conf_meta->cleaning_policy_type,
context->metadata.shutdown_status);
if (context->metadata.shutdown_status == ocf_metadata_clean_shutdown)
result = ocf_cleaning_initialize(cache, cleaning_policy, 0);
else
result = ocf_cleaning_initialize(cache, cleaning_policy, 1);
if (result) {
ocf_cache_log(cache, log_err,
"Cannot initialize cleaning policy\n");
if (result)
OCF_PL_FINISH_RET(pipeline, result);
}
ocf_pipeline_next(pipeline);
}
@ -2339,7 +2381,7 @@ struct ocf_pipeline_properties _ocf_mngt_cache_activate_pipeline_properties = {
OCF_PL_STEP(_ocf_mngt_init_cleaner),
OCF_PL_STEP(_ocf_mngt_init_promotion),
OCF_PL_STEP(_ocf_mngt_load_add_cores),
OCF_PL_STEP(_ocf_mngt_load_post_metadata_load),
OCF_PL_STEP(_ocf_mngt_activate_init_cleaning),
OCF_PL_STEP(_ocf_mngt_attach_shutdown_status),
OCF_PL_STEP(_ocf_mngt_attach_post_init),
OCF_PL_STEP_TERMINATOR(),