Merge pull request #808 from mmichal10/vol_and_req_fixes

Volume improvements
This commit is contained in:
Robert Baldyga 2024-09-06 14:24:48 +02:00 committed by GitHub
commit 3ebf6e64c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 23 additions and 19 deletions

View File

@ -34,6 +34,12 @@ struct ocf_mngt_core_config {
*/
uint8_t volume_type;
/**
* @brief Optional opaque volume parameters, passed down to core volume
* open callback
*/
void *volume_params;
/**
* @brief Add core to pool if cache isn't present or add core to
* earlier loaded cache

View File

@ -107,9 +107,6 @@ struct ocf_cache_attach_context {
bool device_alloc : 1;
/*!< data structure allocated */
bool volume_stored : 1;
/*!< underlying device volume is stored in contex */
bool volume_inited : 1;
/*!< underlying device volume is initialized */
@ -895,8 +892,14 @@ static void _ocf_mngt_attach_cache_device(ocf_pipeline_t pipeline,
context->flags.device_alloc = true;
ocf_volume_move(&cache->device->volume, device_cfg->volume);
ret = ocf_volume_init(&cache->device->volume, device_cfg->volume->type,
NULL, false);
if (ret)
OCF_PL_FINISH_RET(pipeline, -OCF_ERR_NO_MEM);
context->flags.volume_inited = true;
ocf_volume_move(&cache->device->volume, device_cfg->volume);
cache->device->volume.cache = cache;
/*
@ -1911,8 +1914,6 @@ static void _ocf_mngt_attach_handle_error(
if (context->flags.volume_inited)
ocf_volume_deinit(&cache->device->volume);
else
ocf_volume_deinit(context->cfg.device.volume);
if (context->flags.front_volume_opened)
ocf_volume_close(&cache->device->front_volume);
@ -2460,9 +2461,15 @@ static void _ocf_mngt_activate_set_cache_device(ocf_pipeline_t pipeline,
ocf_cache_t cache = context->cache;
int ret;
ret = ocf_volume_init(&cache->device->volume, device_cfg->volume->type,
NULL, false);
if (ret)
OCF_PL_FINISH_RET(pipeline, -OCF_ERR_NO_MEM);
context->flags.volume_inited = true;
ocf_volume_move(&cache->device->volume, device_cfg->volume);
cache->device->volume.cache = cache;
context->flags.volume_inited = true;
ret = ocf_volume_open(&cache->device->volume,
device_cfg->volume_params);
@ -2581,11 +2588,6 @@ static void _ocf_mngt_activate_handle_error(
if (context->flags.volume_inited)
ocf_volume_deinit(&cache->device->volume);
else
ocf_volume_deinit(context->cfg.device.volume);
if (context->flags.volume_stored)
ocf_volume_move(&cache->device->volume, &context->cache_volume);
if (context->flags.metadata_frozen)
ocf_refcnt_unfreeze(&cache->refcnt.metadata);
@ -2613,12 +2615,6 @@ static void _ocf_mngt_cache_activate_finish(ocf_pipeline_t pipeline,
ocf_pipeline_destroy(cache->stop_pipeline);
cache->stop_pipeline = stop_pipeline;
if (context->flags.volume_stored) {
if (context->cache_volume.opened)
ocf_volume_close(&context->cache_volume);
ocf_volume_deinit(&context->cache_volume);
}
out:
context->cmpl(context->cache, context->priv1, context->priv2, error);

View File

@ -414,7 +414,7 @@ static void ocf_mngt_cache_add_core_insert(ocf_pipeline_t pipeline,
OCF_PL_FINISH_RET(pipeline, result);
}
result = ocf_volume_open(volume, NULL);
result = ocf_volume_open(volume, cfg->volume_params);
if (result)
OCF_PL_FINISH_RET(pipeline, result);

View File

@ -1,5 +1,6 @@
#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#
@ -44,6 +45,7 @@ class CoreConfig(Structure):
("_name", c_char * MAX_CORE_NAME_SIZE),
("_uuid", Uuid),
("_volume_type", c_uint8),
("_volume_params", c_void_p),
("_try_add", c_bool),
("_seq_cutoff_threshold", c_uint32),
("_seq_cutoff_promotion_count", c_uint32),