From 2c629be4c2d8108dd22d86955882304a0cdc9375 Mon Sep 17 00:00:00 2001 From: Jan Musial Date: Wed, 26 Jun 2019 09:19:34 +0200 Subject: [PATCH] Fix leaking front and core volumes Signed-off-by: Jan Musial --- src/mngt/ocf_mngt_common.c | 4 ++++ src/mngt/ocf_mngt_core.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mngt/ocf_mngt_common.c b/src/mngt/ocf_mngt_common.c index be31007..68d0070 100644 --- a/src/mngt/ocf_mngt_common.c +++ b/src/mngt/ocf_mngt_common.c @@ -22,7 +22,11 @@ int cache_mngt_core_close(ocf_core_t core) if (!core->opened) return -OCF_ERR_CORE_IN_INACTIVE_STATE; + ocf_volume_close(&core->front_volume); + ocf_volume_deinit(&core->front_volume); + ocf_volume_close(&core->volume); + ocf_volume_deinit(&core->volume); core->opened = false; return 0; diff --git a/src/mngt/ocf_mngt_core.c b/src/mngt/ocf_mngt_core.c index c6c0a3f..cfe10bd 100644 --- a/src/mngt/ocf_mngt_core.c +++ b/src/mngt/ocf_mngt_core.c @@ -456,7 +456,11 @@ int ocf_mngt_core_init_front_volume(ocf_core_t core) if (ret) return ret; - return ocf_volume_open(&core->front_volume, NULL); + ret = ocf_volume_open(&core->front_volume, NULL); + if (ret) + ocf_volume_deinit(&core->front_volume); + + return ret; } static void ocf_mngt_cache_add_core_prepare(ocf_pipeline_t pipeline, @@ -659,8 +663,6 @@ static void _ocf_mngt_cache_remove_core(ocf_pipeline_t pipeline, void *priv, ocf_core_log(core, log_debug, "Removing core\n"); - ocf_volume_close(&core->front_volume); - /* Deinit everything*/ if (ocf_cache_is_device_attached(cache)) { cache_mngt_core_deinit_attached_meta(core);