Merge pull request #612 from robertbaldyga/fix-metadata-flapping
Fix metadata flapping
This commit is contained in:
commit
067f7ad074
@ -304,6 +304,21 @@ static void ocf_metadata_flush_superblock_prepare(ocf_pipeline_t pipeline,
|
|||||||
ocf_pipeline_next(pipeline);
|
ocf_pipeline_next(pipeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ocf_metadata_flush_superblock_flap(ocf_pipeline_t pipeline,
|
||||||
|
void *priv, ocf_pipeline_arg_t arg)
|
||||||
|
{
|
||||||
|
struct ocf_metadata_context *context = priv;
|
||||||
|
struct ocf_metadata_ctrl *ctrl;
|
||||||
|
struct ocf_superblock_config *sb_config;
|
||||||
|
|
||||||
|
ctrl = context->ctrl;
|
||||||
|
sb_config = METADATA_MEM_POOL(ctrl, metadata_segment_sb_config);
|
||||||
|
|
||||||
|
sb_config->flapping_idx = (sb_config->flapping_idx + 1) % 2;
|
||||||
|
|
||||||
|
ocf_pipeline_next(pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
static void ocf_metadata_calculate_crc_sb_config(ocf_pipeline_t pipeline,
|
static void ocf_metadata_calculate_crc_sb_config(ocf_pipeline_t pipeline,
|
||||||
void *priv, ocf_pipeline_arg_t arg)
|
void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
@ -331,15 +346,13 @@ static void ocf_metadata_flush_superblock_finish(ocf_pipeline_t pipeline,
|
|||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
ocf_metadata_error(cache);
|
ocf_metadata_error(cache);
|
||||||
goto end;
|
|
||||||
|
ctrl = context->ctrl;
|
||||||
|
sb_config = METADATA_MEM_POOL(ctrl, metadata_segment_sb_config);
|
||||||
|
|
||||||
|
sb_config->flapping_idx = (sb_config->flapping_idx - 1) % 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrl = context->ctrl;
|
|
||||||
sb_config = METADATA_MEM_POOL(ctrl, metadata_segment_sb_config);
|
|
||||||
|
|
||||||
sb_config->flapping_idx = (sb_config->flapping_idx + 1) % 2;
|
|
||||||
|
|
||||||
end:
|
|
||||||
context->cmpl(context->priv, error);
|
context->cmpl(context->priv, error);
|
||||||
ocf_pipeline_destroy(pipeline);
|
ocf_pipeline_destroy(pipeline);
|
||||||
}
|
}
|
||||||
@ -379,12 +392,13 @@ struct ocf_pipeline_properties ocf_metadata_flush_sb_pipeline_props = {
|
|||||||
.finish = ocf_metadata_flush_superblock_finish,
|
.finish = ocf_metadata_flush_superblock_finish,
|
||||||
.steps = {
|
.steps = {
|
||||||
OCF_PL_STEP(ocf_metadata_flush_superblock_prepare),
|
OCF_PL_STEP(ocf_metadata_flush_superblock_prepare),
|
||||||
OCF_PL_STEP(ocf_metadata_calculate_crc_sb_config),
|
|
||||||
OCF_PL_STEP_FOREACH(ocf_metadata_calculate_crc,
|
OCF_PL_STEP_FOREACH(ocf_metadata_calculate_crc,
|
||||||
ocf_metadata_flush_sb_args),
|
ocf_metadata_flush_sb_args),
|
||||||
OCF_PL_STEP_FOREACH(ocf_metadata_flush_segment,
|
OCF_PL_STEP_FOREACH(ocf_metadata_flush_segment,
|
||||||
ocf_metadata_flush_sb_args),
|
ocf_metadata_flush_sb_args),
|
||||||
OCF_PL_STEP(ocf_metadata_flush_disk),
|
OCF_PL_STEP(ocf_metadata_flush_disk),
|
||||||
|
OCF_PL_STEP(ocf_metadata_flush_superblock_flap),
|
||||||
|
OCF_PL_STEP(ocf_metadata_calculate_crc_sb_config),
|
||||||
OCF_PL_STEP_ARG_INT(ocf_metadata_flush_segment,
|
OCF_PL_STEP_ARG_INT(ocf_metadata_flush_segment,
|
||||||
metadata_segment_sb_config),
|
metadata_segment_sb_config),
|
||||||
OCF_PL_STEP(ocf_metadata_flush_disk),
|
OCF_PL_STEP(ocf_metadata_flush_disk),
|
||||||
|
Loading…
Reference in New Issue
Block a user