Hello, Could you check the last commit? Thanks On Thu, Mar 14, 2024 at 10:04 AM Abdullah Ömer Yamaç wrote: > Hello, > Is there any other comment on this? > > On Wed, Mar 6, 2024 at 1:13 PM Abdullah Ömer Yamaç > wrote: > >> This patch adds a new feature to the hash library to allow the user to >> reclaim the defer queue. This is useful when the user wants to force >> reclaim resources that are not being used. This API is only available >> if the RCU is enabled. >> >> Signed-off-by: Abdullah Ömer Yamaç >> --- >> lib/hash/rte_cuckoo_hash.c | 23 +++++++++++++++++++++++ >> lib/hash/rte_hash.h | 24 ++++++++++++++++++++++++ >> lib/hash/version.map | 6 ++++++ >> 3 files changed, 53 insertions(+) >> >> diff --git a/lib/hash/rte_cuckoo_hash.c b/lib/hash/rte_cuckoo_hash.c >> index 9cf94645f6..1c360fa38b 100644 >> --- a/lib/hash/rte_cuckoo_hash.c >> +++ b/lib/hash/rte_cuckoo_hash.c >> @@ -1588,6 +1588,29 @@ rte_hash_rcu_qsbr_add(struct rte_hash *h, struct >> rte_hash_rcu_config *cfg) >> return 0; >> } >> >> +int >> +rte_hash_rcu_qsbr_dq_reclaim(struct rte_hash *h, unsigned int *freed, >> + unsigned int *pending, unsigned int *available) >> +{ >> + int ret; >> + >> + if (h->hash_rcu_cfg == NULL) { >> + rte_errno = EINVAL; >> + return -1; >> + } >> + >> + ret = rte_rcu_qsbr_dq_reclaim(h->dq, >> h->hash_rcu_cfg->max_reclaim_size, >> + freed, pending, >> available); >> + if (ret != 0) { >> + HASH_LOG(ERR, >> + "%s: could not reclaim the defer queue in hash >> table", >> + __func__); >> + return -1; >> + } >> + >> + return 0; >> +} >> + >> static inline void >> remove_entry(const struct rte_hash *h, struct rte_hash_bucket *bkt, >> unsigned int i) >> diff --git a/lib/hash/rte_hash.h b/lib/hash/rte_hash.h >> index 7ecc021111..edfa262aca 100644 >> --- a/lib/hash/rte_hash.h >> +++ b/lib/hash/rte_hash.h >> @@ -674,6 +674,30 @@ rte_hash_iterate(const struct rte_hash *h, const >> void **key, void **data, uint32 >> */ >> int rte_hash_rcu_qsbr_add(struct rte_hash *h, struct rte_hash_rcu_config >> *cfg); >> >> +/** >> + * Reclaim resources from the defer queue. >> + * This API reclaim the resources from the defer queue if rcu is enabled. >> + * >> + * @param h >> + * The hash object to reclaim resources. >> + * @param freed >> + * Number of resources that were freed. >> + * @param pending >> + * Number of resources pending on the defer queue. >> + * This number might not be accurate if multi-thread safety is >> configured. >> + * @param available >> + * Number of resources that can be added to the defer queue. >> + * This number might not be accurate if multi-thread safety is >> configured. >> + * @return >> + * On success - 0 >> + * On error - 1 with error code set in rte_errno. >> + * Possible rte_errno codes are: >> + * - EINVAL - invalid pointer >> + */ >> +__rte_experimental >> +int rte_hash_rcu_qsbr_dq_reclaim(struct rte_hash *h, unsigned int *freed, >> + unsigned int *pending, unsigned int *available); >> + >> #ifdef __cplusplus >> } >> #endif >> diff --git a/lib/hash/version.map b/lib/hash/version.map >> index 6b2afebf6b..fac7f81e6f 100644 >> --- a/lib/hash/version.map >> +++ b/lib/hash/version.map >> @@ -48,3 +48,9 @@ DPDK_24 { >> >> local: *; >> }; >> + >> +EXPERIMENTAL { >> + global: >> + >> + rte_hash_rcu_qsbr_dq_reclaim; >> +}; >> \ No newline at end of file >> -- >> 2.34.1 >> >>