/* * Copyright(c) 2012-2021 Intel Corporation * SPDX-License-Identifier: BSD-3-Clause-Clear */ #ifndef __CAS_CACHE_H__ #define __CAS_CACHE_H__ #include "ocf/ocf.h" #include "ocf_env.h" #include #include "linux_kernel_version.h" #include "layer_upgrade.h" #include "control.h" #include "layer_cache_management.h" #include "service_ui_ioctl.h" #include "utils/cas_cache_utils.h" #include "volume/vol_blk_utils.h" #include "classifier.h" #include "context.h" #include #define CAS_KERN_EMERG KERN_EMERG OCF_PREFIX_SHORT #define CAS_KERN_ALERT KERN_ALERT OCF_PREFIX_SHORT #define CAS_KERN_CRIT KERN_CRIT OCF_PREFIX_SHORT #define CAS_KERN_ERR KERN_ERR OCF_PREFIX_SHORT #define CAS_KERN_WARNING KERN_WARNING OCF_PREFIX_SHORT #define CAS_KERN_NOTICE KERN_NOTICE OCF_PREFIX_SHORT #define CAS_KERN_INFO KERN_INFO OCF_PREFIX_SHORT #define CAS_KERN_DEBUG KERN_DEBUG OCF_PREFIX_SHORT #ifndef SECTOR_SHIFT #define SECTOR_SHIFT 9 #endif #ifndef SECTOR_SIZE #define SECTOR_SIZE (1<= OCF_CACHE_NAME_SIZE); } static inline void core_name_from_id(char *name, uint16_t id) { int result; result = snprintf(name, OCF_CORE_NAME_SIZE, "core%d", id); ENV_BUG_ON(result >= OCF_CORE_NAME_SIZE); } static inline int cache_id_from_name(uint16_t *cache_id, const char *name) { const char *id_str; long res; int result; if (strnlen(name, OCF_CACHE_NAME_SIZE) < sizeof("cache") - 1) return -EINVAL; id_str = name + sizeof("cache") - 1; result = kstrtol(id_str, 10, &res); if (!result) *cache_id = res; return result; } static inline int core_id_from_name(uint16_t *core_id, const char *name) { const char *id_str; long res; int result; if (strnlen(name, OCF_CORE_NAME_SIZE) < sizeof("core") - 1) return -EINVAL; id_str = name + sizeof("core") - 1; result = kstrtol(id_str, 10, &res); if (!result) *core_id = res; return result; } static inline int mngt_get_cache_by_id(ocf_ctx_t ctx, uint16_t id, ocf_cache_t *cache) { char cache_name[OCF_CACHE_NAME_SIZE]; cache_name_from_id(cache_name, id); return ocf_mngt_cache_get_by_name(ctx, cache_name, OCF_CACHE_NAME_SIZE, cache); } static inline int get_core_by_id(ocf_cache_t cache, uint16_t id, ocf_core_t *core) { char core_name[OCF_CORE_NAME_SIZE]; core_name_from_id(core_name, id); return ocf_core_get_by_name(cache, core_name, OCF_CORE_NAME_SIZE, core); } #endif