Move metadata layout field outside meteadata ifc
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
parent
b5d6cdb398
commit
4d97b1611f
@ -32,9 +32,6 @@
|
|||||||
|
|
||||||
#define METADATA_MEM_POOL(ctrl, section) ctrl->raw_desc[section].mem_pool
|
#define METADATA_MEM_POOL(ctrl, section) ctrl->raw_desc[section].mem_pool
|
||||||
|
|
||||||
static void ocf_metadata_hash_init_iface(struct ocf_cache *cache,
|
|
||||||
ocf_metadata_layout_t layout);
|
|
||||||
|
|
||||||
#define OCF_METADATA_HASH_DIFF_MAX 1000
|
#define OCF_METADATA_HASH_DIFF_MAX 1000
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -900,6 +897,17 @@ static void ocf_metadata_hash_flush_unlock_collision_page(
|
|||||||
page);
|
page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ocf_metadata_init_layout(struct ocf_cache *cache,
|
||||||
|
ocf_metadata_layout_t layout)
|
||||||
|
{
|
||||||
|
ENV_BUG_ON(layout >= ocf_metadata_layout_max || layout < 0);
|
||||||
|
|
||||||
|
/* Initialize metadata location interface*/
|
||||||
|
if (cache->device->init_mode == ocf_init_mode_metadata_volatile)
|
||||||
|
layout = ocf_metadata_layout_seq;
|
||||||
|
cache->metadata.layout = layout;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize hash metadata interface
|
* Initialize hash metadata interface
|
||||||
*/
|
*/
|
||||||
@ -940,7 +948,7 @@ int ocf_metadata_init_variable_size(struct ocf_cache *cache,
|
|||||||
ctrl->mapping_size = ocf_metadata_status_sizeof(settings)
|
ctrl->mapping_size = ocf_metadata_status_sizeof(settings)
|
||||||
+ sizeof(struct ocf_metadata_map);
|
+ sizeof(struct ocf_metadata_map);
|
||||||
|
|
||||||
ocf_metadata_hash_init_iface(cache, layout);
|
ocf_metadata_init_layout(cache, layout);
|
||||||
|
|
||||||
/* Initial setup of dynamic size RAW containers */
|
/* Initial setup of dynamic size RAW containers */
|
||||||
for (i = metadata_segment_variable_size_start;
|
for (i = metadata_segment_variable_size_start;
|
||||||
@ -2553,10 +2561,7 @@ static ocf_cache_line_t ocf_metadata_hash_map_phy2lg_striping(
|
|||||||
ocf_cache_line_t ocf_metadata_map_lg2phy(
|
ocf_cache_line_t ocf_metadata_map_lg2phy(
|
||||||
struct ocf_cache *cache, ocf_cache_line_t coll_idx)
|
struct ocf_cache *cache, ocf_cache_line_t coll_idx)
|
||||||
{
|
{
|
||||||
struct ocf_metadata_iface *iface = (struct ocf_metadata_iface *)
|
switch (cache->metadata.layout) {
|
||||||
&cache->metadata.iface;
|
|
||||||
|
|
||||||
switch (iface->layout) {
|
|
||||||
case ocf_metadata_layout_striping:
|
case ocf_metadata_layout_striping:
|
||||||
return ocf_metadata_hash_map_lg2phy_striping(
|
return ocf_metadata_hash_map_lg2phy_striping(
|
||||||
cache, coll_idx);
|
cache, coll_idx);
|
||||||
@ -2572,10 +2577,7 @@ ocf_cache_line_t ocf_metadata_map_lg2phy(
|
|||||||
ocf_cache_line_t ocf_metadata_map_phy2lg(
|
ocf_cache_line_t ocf_metadata_map_phy2lg(
|
||||||
struct ocf_cache *cache, ocf_cache_line_t cache_line)
|
struct ocf_cache *cache, ocf_cache_line_t cache_line)
|
||||||
{
|
{
|
||||||
struct ocf_metadata_iface *iface = (struct ocf_metadata_iface *)
|
switch (cache->metadata.layout) {
|
||||||
&cache->metadata.iface;
|
|
||||||
|
|
||||||
switch (iface->layout) {
|
|
||||||
case ocf_metadata_layout_striping:
|
case ocf_metadata_layout_striping:
|
||||||
return ocf_metadata_hash_map_phy2lg_striping(
|
return ocf_metadata_hash_map_phy2lg_striping(
|
||||||
cache, cache_line);
|
cache, cache_line);
|
||||||
@ -2844,22 +2846,6 @@ bool ocf_metadata_##what(struct ocf_cache *cache, \
|
|||||||
_ocf_metadata_funcs(dirty)
|
_ocf_metadata_funcs(dirty)
|
||||||
_ocf_metadata_funcs(valid)
|
_ocf_metadata_funcs(valid)
|
||||||
|
|
||||||
static void ocf_metadata_hash_init_iface(struct ocf_cache *cache,
|
|
||||||
ocf_metadata_layout_t layout)
|
|
||||||
{
|
|
||||||
struct ocf_metadata_iface *iface = (struct ocf_metadata_iface *)
|
|
||||||
&cache->metadata.iface;
|
|
||||||
|
|
||||||
ENV_BUG_ON(layout >= ocf_metadata_layout_max || layout < 0);
|
|
||||||
|
|
||||||
/* Initialize metadata location interface*/
|
|
||||||
if (cache->device->init_mode == ocf_init_mode_metadata_volatile)
|
|
||||||
layout = ocf_metadata_layout_seq;
|
|
||||||
iface->layout = layout;
|
|
||||||
|
|
||||||
/* Initialize bit status function */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get metadata hash interface
|
* Get metadata hash interface
|
||||||
*/
|
*/
|
||||||
|
@ -344,6 +344,9 @@ struct ocf_metadata {
|
|||||||
const struct ocf_metadata_iface iface;
|
const struct ocf_metadata_iface iface;
|
||||||
/*!< Metadata service interface */
|
/*!< Metadata service interface */
|
||||||
|
|
||||||
|
ocf_metadata_layout_t layout;
|
||||||
|
/*!< Per-cacheline metadata layout */
|
||||||
|
|
||||||
void *priv;
|
void *priv;
|
||||||
/*!< Private data of metadata service interface */
|
/*!< Private data of metadata service interface */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user