Merge pull request #250 from robertbaldyga/parts-meta-new-section
Move parts metadata to separate section
This commit is contained in:
commit
1f9f79f11d
@ -96,6 +96,12 @@ static ocf_cache_line_t ocf_metadata_hash_get_entries(
|
|||||||
case metadata_segment_reserved:
|
case metadata_segment_reserved:
|
||||||
return 32;
|
return 32;
|
||||||
|
|
||||||
|
case metadata_segment_part_config:
|
||||||
|
return OCF_IO_CLASS_MAX + 1;
|
||||||
|
|
||||||
|
case metadata_segment_part_runtime:
|
||||||
|
return OCF_IO_CLASS_MAX + 1;
|
||||||
|
|
||||||
case metadata_segment_core_config:
|
case metadata_segment_core_config:
|
||||||
return OCF_CORE_MAX;
|
return OCF_CORE_MAX;
|
||||||
|
|
||||||
@ -154,6 +160,14 @@ static int64_t ocf_metadata_hash_get_element_size(
|
|||||||
size = PAGE_SIZE;
|
size = PAGE_SIZE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case metadata_segment_part_config:
|
||||||
|
size = sizeof(struct ocf_user_part_config);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case metadata_segment_part_runtime:
|
||||||
|
size = sizeof(struct ocf_user_part_runtime);
|
||||||
|
break;
|
||||||
|
|
||||||
case metadata_segment_hash:
|
case metadata_segment_hash:
|
||||||
size = sizeof(ocf_cache_line_t);
|
size = sizeof(ocf_cache_line_t);
|
||||||
break;
|
break;
|
||||||
@ -318,6 +332,8 @@ static const char * const ocf_metadata_hash_raw_names[] = {
|
|||||||
[metadata_segment_sb_config] = "Super block config",
|
[metadata_segment_sb_config] = "Super block config",
|
||||||
[metadata_segment_sb_runtime] = "Super block runtime",
|
[metadata_segment_sb_runtime] = "Super block runtime",
|
||||||
[metadata_segment_reserved] = "Reserved",
|
[metadata_segment_reserved] = "Reserved",
|
||||||
|
[metadata_segment_part_config] = "Part config",
|
||||||
|
[metadata_segment_part_runtime] = "Part runtime",
|
||||||
[metadata_segment_cleaning] = "Cleaning",
|
[metadata_segment_cleaning] = "Cleaning",
|
||||||
[metadata_segment_eviction] = "Eviction",
|
[metadata_segment_eviction] = "Eviction",
|
||||||
[metadata_segment_collision] = "Collision",
|
[metadata_segment_collision] = "Collision",
|
||||||
@ -504,6 +520,8 @@ int ocf_metadata_hash_init(struct ocf_cache *cache,
|
|||||||
(struct ocf_cache_line_settings *)&metadata->settings;
|
(struct ocf_cache_line_settings *)&metadata->settings;
|
||||||
struct ocf_core_meta_config *core_meta_config;
|
struct ocf_core_meta_config *core_meta_config;
|
||||||
struct ocf_core_meta_runtime *core_meta_runtime;
|
struct ocf_core_meta_runtime *core_meta_runtime;
|
||||||
|
struct ocf_user_part_config *part_config;
|
||||||
|
struct ocf_user_part_runtime *part_runtime;
|
||||||
ocf_core_t core;
|
ocf_core_t core;
|
||||||
ocf_core_id_t core_id;
|
ocf_core_id_t core_id;
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
@ -531,8 +549,16 @@ int ocf_metadata_hash_init(struct ocf_cache *cache,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
cache->conf_meta = METADATA_MEM_POOL(ctrl,
|
cache->conf_meta = METADATA_MEM_POOL(ctrl, metadata_segment_sb_config);
|
||||||
metadata_segment_sb_config);
|
|
||||||
|
/* Set partition metadata */
|
||||||
|
part_config = METADATA_MEM_POOL(ctrl, metadata_segment_part_config);
|
||||||
|
part_runtime = METADATA_MEM_POOL(ctrl, metadata_segment_part_runtime);
|
||||||
|
|
||||||
|
for (i = 0; i < OCF_IO_CLASS_MAX + 1; i++) {
|
||||||
|
cache->user_parts[i].config = &part_config[i];
|
||||||
|
cache->user_parts[i].runtime = &part_runtime[i];
|
||||||
|
}
|
||||||
|
|
||||||
/* Set core metadata */
|
/* Set core metadata */
|
||||||
core_meta_config = METADATA_MEM_POOL(ctrl,
|
core_meta_config = METADATA_MEM_POOL(ctrl,
|
||||||
@ -1326,6 +1352,8 @@ static void ocf_metadata_hash_load_superblock_finish(ocf_pipeline_t pipeline,
|
|||||||
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_store_segment_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_store_segment_args[] = {
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_config),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_runtime),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_config),
|
OCF_PL_ARG_INT(metadata_segment_core_config),
|
||||||
OCF_PL_ARG_TERMINATOR(),
|
OCF_PL_ARG_TERMINATOR(),
|
||||||
};
|
};
|
||||||
@ -1333,6 +1361,8 @@ struct ocf_pipeline_arg ocf_metadata_hash_load_sb_store_segment_args[] = {
|
|||||||
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_load_segment_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_load_segment_args[] = {
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_config),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_runtime),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_config),
|
OCF_PL_ARG_INT(metadata_segment_core_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
||||||
OCF_PL_ARG_TERMINATOR(),
|
OCF_PL_ARG_TERMINATOR(),
|
||||||
@ -1340,6 +1370,8 @@ struct ocf_pipeline_arg ocf_metadata_hash_load_sb_load_segment_args[] = {
|
|||||||
|
|
||||||
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_check_crc_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_load_sb_check_crc_args[] = {
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_config),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_runtime),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_config),
|
OCF_PL_ARG_INT(metadata_segment_core_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
||||||
OCF_PL_ARG_TERMINATOR(),
|
OCF_PL_ARG_TERMINATOR(),
|
||||||
@ -1481,6 +1513,7 @@ static void ocf_metadata_hash_flush_superblock_finish(ocf_pipeline_t pipeline,
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct ocf_pipeline_arg ocf_metadata_hash_flush_sb_calculate_crc_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_flush_sb_calculate_crc_args[] = {
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_config),
|
OCF_PL_ARG_INT(metadata_segment_core_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
||||||
OCF_PL_ARG_TERMINATOR(),
|
OCF_PL_ARG_TERMINATOR(),
|
||||||
@ -1488,6 +1521,7 @@ struct ocf_pipeline_arg ocf_metadata_hash_flush_sb_calculate_crc_args[] = {
|
|||||||
|
|
||||||
struct ocf_pipeline_arg ocf_metadata_hash_flush_sb_flush_segment_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_flush_sb_flush_segment_args[] = {
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
OCF_PL_ARG_INT(metadata_segment_sb_config),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_config),
|
OCF_PL_ARG_INT(metadata_segment_core_config),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
OCF_PL_ARG_INT(metadata_segment_core_uuid),
|
||||||
OCF_PL_ARG_TERMINATOR(),
|
OCF_PL_ARG_TERMINATOR(),
|
||||||
@ -1631,6 +1665,7 @@ out:
|
|||||||
|
|
||||||
struct ocf_pipeline_arg ocf_metadata_hash_flush_all_args[] = {
|
struct ocf_pipeline_arg ocf_metadata_hash_flush_all_args[] = {
|
||||||
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
OCF_PL_ARG_INT(metadata_segment_sb_runtime),
|
||||||
|
OCF_PL_ARG_INT(metadata_segment_part_runtime),
|
||||||
OCF_PL_ARG_INT(metadata_segment_core_runtime),
|
OCF_PL_ARG_INT(metadata_segment_core_runtime),
|
||||||
OCF_PL_ARG_INT(metadata_segment_cleaning),
|
OCF_PL_ARG_INT(metadata_segment_cleaning),
|
||||||
OCF_PL_ARG_INT(metadata_segment_eviction),
|
OCF_PL_ARG_INT(metadata_segment_eviction),
|
||||||
|
@ -19,6 +19,8 @@ enum ocf_metadata_segment {
|
|||||||
metadata_segment_sb_config = 0, /*!< Super block conf */
|
metadata_segment_sb_config = 0, /*!< Super block conf */
|
||||||
metadata_segment_sb_runtime, /*!< Super block runtime */
|
metadata_segment_sb_runtime, /*!< Super block runtime */
|
||||||
metadata_segment_reserved, /*!< Reserved space on disk */
|
metadata_segment_reserved, /*!< Reserved space on disk */
|
||||||
|
metadata_segment_part_config, /*!< Part Config Metadata */
|
||||||
|
metadata_segment_part_runtime, /*!< Part Runtime Metadata */
|
||||||
metadata_segment_core_config, /*!< Core Config Metadata */
|
metadata_segment_core_config, /*!< Core Config Metadata */
|
||||||
metadata_segment_core_runtime, /*!< Core Runtime Metadata */
|
metadata_segment_core_runtime, /*!< Core Runtime Metadata */
|
||||||
metadata_segment_core_uuid, /*!< Core UUID */
|
metadata_segment_core_uuid, /*!< Core UUID */
|
||||||
|
@ -48,8 +48,6 @@ struct ocf_superblock_config {
|
|||||||
/* Current core sequence number */
|
/* Current core sequence number */
|
||||||
ocf_core_id_t curr_core_seq_no;
|
ocf_core_id_t curr_core_seq_no;
|
||||||
|
|
||||||
struct ocf_user_part_config user_parts[OCF_IO_CLASS_MAX + 1];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checksum for each metadata region.
|
* Checksum for each metadata region.
|
||||||
* This field has to be the last one!
|
* This field has to be the last one!
|
||||||
@ -63,8 +61,6 @@ struct ocf_superblock_config {
|
|||||||
struct ocf_superblock_runtime {
|
struct ocf_superblock_runtime {
|
||||||
struct ocf_part freelist_part;
|
struct ocf_part freelist_part;
|
||||||
|
|
||||||
struct ocf_user_part_runtime user_parts[OCF_IO_CLASS_MAX + 1];
|
|
||||||
|
|
||||||
uint32_t cleaning_thread_access;
|
uint32_t cleaning_thread_access;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -958,7 +958,7 @@ static void _ocf_mngt_attach_prepare_metadata(ocf_pipeline_t pipeline,
|
|||||||
{
|
{
|
||||||
struct ocf_cache_attach_context *context = priv;
|
struct ocf_cache_attach_context *context = priv;
|
||||||
ocf_cache_t cache = context->cache;
|
ocf_cache_t cache = context->cache;
|
||||||
int ret, i;
|
int ret;
|
||||||
|
|
||||||
if (context->init_mode == ocf_init_mode_load &&
|
if (context->init_mode == ocf_init_mode_load &&
|
||||||
context->metadata.status) {
|
context->metadata.status) {
|
||||||
@ -986,11 +986,6 @@ static void _ocf_mngt_attach_prepare_metadata(ocf_pipeline_t pipeline,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < OCF_IO_CLASS_MAX + 1; ++i) {
|
|
||||||
cache->user_parts[i].runtime =
|
|
||||||
&cache->device->runtime_meta->user_parts[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
cache->device->freelist_part = &cache->device->runtime_meta->freelist_part;
|
cache->device->freelist_part = &cache->device->runtime_meta->freelist_part;
|
||||||
|
|
||||||
ret = ocf_concurrency_init(cache);
|
ret = ocf_concurrency_init(cache);
|
||||||
@ -1158,8 +1153,6 @@ static void _ocf_mngt_attach_handle_error(
|
|||||||
static void _ocf_mngt_cache_init(ocf_cache_t cache,
|
static void _ocf_mngt_cache_init(ocf_cache_t cache,
|
||||||
struct ocf_cache_mngt_init_params *params)
|
struct ocf_cache_mngt_init_params *params)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Super block elements initialization
|
* Super block elements initialization
|
||||||
*/
|
*/
|
||||||
@ -1168,11 +1161,6 @@ static void _ocf_mngt_cache_init(ocf_cache_t cache,
|
|||||||
cache->conf_meta->promotion_policy_type =
|
cache->conf_meta->promotion_policy_type =
|
||||||
params->metadata.promotion_policy;
|
params->metadata.promotion_policy;
|
||||||
|
|
||||||
for (i = 0; i < OCF_IO_CLASS_MAX + 1; ++i) {
|
|
||||||
cache->user_parts[i].config =
|
|
||||||
&cache->conf_meta->user_parts[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&cache->io_queues);
|
INIT_LIST_HEAD(&cache->io_queues);
|
||||||
|
|
||||||
/* Init Partitions */
|
/* Init Partitions */
|
||||||
|
Loading…
Reference in New Issue
Block a user