From b9c84e331c13405fa3d994c45c5f3b2e2af656c5 Mon Sep 17 00:00:00 2001 From: Jan Musial Date: Fri, 10 Sep 2021 14:26:30 +0200 Subject: [PATCH 1/2] Fix attach with no cache_line_size specified Signed-off-by: Jan Musial --- src/mngt/ocf_mngt_cache.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/mngt/ocf_mngt_cache.c b/src/mngt/ocf_mngt_cache.c index a22feef..771549e 100644 --- a/src/mngt/ocf_mngt_cache.c +++ b/src/mngt/ocf_mngt_cache.c @@ -1036,7 +1036,8 @@ static void _ocf_mngt_init_properties(ocf_pipeline_t pipeline, context->metadata.shutdown_status = ocf_metadata_clean_shutdown; context->metadata.dirty_flushed = DIRTY_FLUSHED; - context->metadata.line_size = context->cfg.cache_line_size; + context->metadata.line_size = context->cfg.cache_line_size ?: + cache->metadata.line_size; ocf_pipeline_next(pipeline); } @@ -1071,9 +1072,6 @@ static void _ocf_mngt_attach_prepare_metadata(ocf_pipeline_t pipeline, ocf_cache_t cache = context->cache; int ret; - context->metadata.line_size = context->metadata.line_size ?: - cache->metadata.line_size; - /* * Initialize variable size metadata segments */ @@ -2193,7 +2191,7 @@ static void _ocf_mngt_activate_init_properties(ocf_pipeline_t pipeline, context->metadata.shutdown_status = ocf_metadata_dirty_shutdown; context->metadata.dirty_flushed = DIRTY_NOT_FLUSHED; - context->metadata.line_size = context->cfg.cache_line_size; + context->metadata.line_size = cache->metadata.line_size; ocf_pipeline_next(pipeline); } From 010f30eeaf30ad469db1bccbad591fe1fcb22dcd Mon Sep 17 00:00:00 2001 From: Jan Musial Date: Mon, 13 Sep 2021 12:53:10 +0200 Subject: [PATCH 2/2] Validate activate parameters Signed-off-by: Jan Musial --- src/mngt/ocf_mngt_cache.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/mngt/ocf_mngt_cache.c b/src/mngt/ocf_mngt_cache.c index 771549e..be4a59f 100644 --- a/src/mngt/ocf_mngt_cache.c +++ b/src/mngt/ocf_mngt_cache.c @@ -2732,20 +2732,22 @@ void ocf_mngt_cache_activate(ocf_cache_t cache, OCF_CHECK_NULL(cache); OCF_CHECK_NULL(cfg); - if (!cache->mngt_queue) - OCF_CMPL_RET(cache, priv, -OCF_ERR_INVAL); - - /* Activate is not allowed in volatile metadata mode */ - if (cache->metadata.is_volatile) - OCF_CMPL_RET(cache, priv, -OCF_ERR_INVAL); - - /* Activate is not allowed with 'force' flag on */ if (cfg->force) { ocf_cache_log(cache, log_err, "Using 'force' flag is forbidden " "for activate operation."); OCF_CMPL_RET(cache, priv, -OCF_ERR_INVAL); } + if (cfg->cache_line_size != ocf_cache_line_size_none && + cfg->cache_line_size != cache->metadata.line_size) { + ocf_cache_log(cache, log_err, "Specifying cache line size is " + "forbidden for activate operation."); + OCF_CMPL_RET(cache, priv, -OCF_ERR_INVAL); + } + + if (!cache->mngt_queue) + OCF_CMPL_RET(cache, priv, -OCF_ERR_INVAL); + result = _ocf_mngt_cache_validate_device_cfg(cfg); if (result) OCF_CMPL_RET(cache, priv, result);