cas_cache: Add promotion count parameter
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
9bc827a4f2
commit
e6710e0016
@ -1273,6 +1273,7 @@ int cache_mngt_add_core_to_cache(const char *cache_name, size_t name_len,
|
||||
}
|
||||
|
||||
cfg->seq_cutoff_threshold = seq_cut_off_mb * MiB;
|
||||
cfg->seq_cutoff_promotion_count = 8;
|
||||
|
||||
init_completion(&add_context.cmpl);
|
||||
add_context.core = &core;
|
||||
@ -2136,6 +2137,43 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief routine implementing dynamic sequential cutoff parameter switching
|
||||
* @param[in] cache cache to which the change pertains
|
||||
* @param[in] core core to which the change pertains
|
||||
* or NULL for setting value for all cores attached to specified cache
|
||||
* @param[in] count new sequential cutoff promotion request count value
|
||||
* @return exit code of successful completion is 0;
|
||||
* nonzero exit code means failure
|
||||
*/
|
||||
|
||||
int cache_mngt_set_seq_cutoff_promotion_count(ocf_cache_t cache,
|
||||
ocf_core_t core, uint32_t count)
|
||||
{
|
||||
int result;
|
||||
|
||||
result = _cache_mngt_lock_sync(cache);
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
if (core) {
|
||||
result = ocf_mngt_core_set_seq_cutoff_promotion_count(core,
|
||||
count);
|
||||
} else {
|
||||
result = ocf_mngt_core_set_seq_cutoff_promotion_count_all(cache,
|
||||
count);
|
||||
}
|
||||
|
||||
if (result)
|
||||
goto out;
|
||||
|
||||
result = _cache_mngt_save_sync(cache);
|
||||
|
||||
out:
|
||||
ocf_mngt_cache_unlock(cache);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get sequential cutoff threshold value
|
||||
* @param[in] core OCF core
|
||||
@ -2183,6 +2221,30 @@ int cache_mngt_get_seq_cutoff_policy(ocf_core_t core,
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get sequential cutoff promotion request count value
|
||||
* @param[in] core OCF core
|
||||
* @param[out] count sequential cutoff promotion request count value
|
||||
* @return exit code of successful completion is 0;
|
||||
* nonzero exit code means failure
|
||||
*/
|
||||
|
||||
int cache_mngt_get_seq_cutoff_promotion_count(ocf_core_t core,
|
||||
uint32_t *count)
|
||||
{
|
||||
ocf_cache_t cache = ocf_core_get_cache(core);
|
||||
int result;
|
||||
|
||||
result = _cache_mngt_read_lock_sync(cache);
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = ocf_mngt_core_get_seq_cutoff_promotion_count(core, count);
|
||||
|
||||
ocf_mngt_cache_read_unlock(cache);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int _cache_flush_with_lock(ocf_cache_t cache)
|
||||
{
|
||||
int result = 0;
|
||||
@ -2646,6 +2708,10 @@ int cache_mngt_set_core_params(struct kcas_set_core_param *info)
|
||||
result = cache_mngt_set_seq_cutoff_policy(cache, core,
|
||||
info->param_value);
|
||||
break;
|
||||
case core_param_seq_cutoff_promotion_count:
|
||||
result = cache_mngt_set_seq_cutoff_promotion_count(cache,
|
||||
core, info->param_value);
|
||||
break;
|
||||
default:
|
||||
result = -EINVAL;
|
||||
}
|
||||
@ -2678,6 +2744,10 @@ int cache_mngt_get_core_params(struct kcas_get_core_param *info)
|
||||
result = cache_mngt_get_seq_cutoff_policy(core,
|
||||
&info->param_value);
|
||||
break;
|
||||
case core_param_seq_cutoff_promotion_count:
|
||||
result = cache_mngt_get_seq_cutoff_promotion_count(core,
|
||||
&info->param_value);
|
||||
break;
|
||||
default:
|
||||
result = -EINVAL;
|
||||
}
|
||||
|
@ -330,6 +330,7 @@ struct kcas_cache_check_device {
|
||||
enum kcas_core_param_id {
|
||||
core_param_seq_cutoff_threshold,
|
||||
core_param_seq_cutoff_policy,
|
||||
core_param_seq_cutoff_promotion_count,
|
||||
core_param_id_max,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user