From 9b1044637dcae8e162fc7fc333f67490b923d1e2 Mon Sep 17 00:00:00 2001 From: Rafal Stefanowski Date: Fri, 19 Jun 2026 17:44:25 +0200 Subject: [PATCH] Get cleaner from cache Needed by SPDK OCF module to set/get CPU mask on cleaner thread. Signed-off-by: Rafal Stefanowski --- inc/ocf_cache.h | 11 +++++++++++ src/ocf_cache.c | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/inc/ocf_cache.h b/inc/ocf_cache.h index a38a61fa..fa07bf66 100644 --- a/inc/ocf_cache.h +++ b/inc/ocf_cache.h @@ -264,6 +264,17 @@ const struct ocf_volume_uuid *ocf_cache_get_uuid(ocf_cache_t cache); */ ocf_ctx_t ocf_cache_get_ctx(ocf_cache_t cache); +/** + * @brief Get OCF cleaner of given cache object + * + * @param[in] cache Cache object + * + * @retval OCF cleaner, NULL if cache is in standby mode, + * cache device is not attached (cleaner not initialized) + * or cleaner is disabled + */ +ocf_cleaner_t ocf_cache_get_cleaner(ocf_cache_t cache); + /** * @brief Get volume type id of given cache object * diff --git a/src/ocf_cache.c b/src/ocf_cache.c index b8dd408a..29e71533 100644 --- a/src/ocf_cache.c +++ b/src/ocf_cache.c @@ -288,6 +288,22 @@ ocf_ctx_t ocf_cache_get_ctx(ocf_cache_t cache) return cache->owner; } +ocf_cleaner_t ocf_cache_get_cleaner(ocf_cache_t cache) +{ + OCF_CHECK_NULL(cache); + + if (ocf_cache_is_standby(cache)) + return NULL; + + if (!ocf_cache_is_device_attached(cache)) + return NULL; + + if (cache->conf_meta->cleaner_disabled) + return NULL; + + return &cache->cleaner; +} + void ocf_cache_set_priv(ocf_cache_t cache, void *priv) { OCF_CHECK_NULL(cache);