From b7e59ee04a410c3b7d543e6573d2a9dcc2d2734d Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Fri, 14 Feb 2020 10:29:15 +0100 Subject: [PATCH 1/3] metadata: Use proper function for freeing memory a_req is allocated using env_vmalloc() so we need to free it using env_vfree(), not env_free(). Signed-off-by: Robert Baldyga --- src/metadata/metadata_io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metadata/metadata_io.c b/src/metadata/metadata_io.c index 2a20871..3eea63b 100644 --- a/src/metadata/metadata_io.c +++ b/src/metadata/metadata_io.c @@ -422,7 +422,7 @@ static int metadata_io_i_asynch(ocf_cache_t cache, ocf_queue_t queue, int dir, compl_hndl(cache, context, a_req->error); if (env_atomic_dec_return(&a_req->req_active) == 0) - env_free(a_req); + env_vfree(a_req); return 0; From 952767905af279614330eb416bc49ea9b60f2ddd Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Fri, 14 Feb 2020 12:03:09 +0100 Subject: [PATCH 2/3] env: Add extended versions of env_vmalloc functions Signed-off-by: Robert Baldyga --- env/posix/ocf_env.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/env/posix/ocf_env.h b/env/posix/ocf_env.h index c175c31..55fbe0a 100644 --- a/env/posix/ocf_env.h +++ b/env/posix/ocf_env.h @@ -124,6 +124,16 @@ static inline void env_free(const void *ptr) free((void *)ptr); } +static inline void *env_vmalloc_flags(size_t size, int flags) +{ + return malloc(size); +} + +static inline void *env_vzalloc_flags(size_t size, int flags) +{ + return env_zalloc(size, 0); +} + static inline void *env_vmalloc(size_t size) { return malloc(size); From ac7b5aba6b1f5257687307cf8b283ca414a80ed7 Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Fri, 14 Feb 2020 10:29:42 +0100 Subject: [PATCH 3/3] metadata: Allocate memory with ENV_MEM_NOIO flag Signed-off-by: Robert Baldyga --- src/metadata/metadata_io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metadata/metadata_io.c b/src/metadata/metadata_io.c index 3eea63b..bc442b6 100644 --- a/src/metadata/metadata_io.c +++ b/src/metadata/metadata_io.c @@ -375,7 +375,7 @@ static int metadata_io_i_asynch(ocf_cache_t cache, ocf_queue_t queue, int dir, if (count == 0) return 0; - a_req = env_vzalloc(sizeof(*a_req)); + a_req = env_vzalloc_flags(sizeof(*a_req), ENV_MEM_NOIO); if (!a_req) return -OCF_ERR_NO_MEM;