From 8b81801e2dc0bfc00a4d3de0ef52c3d600523d1c Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 5 Jan 2022 23:02:25 +0000 Subject: [PATCH] env_dpdk: do rte_eal_cleanup() at process exit We already use destructor functions in env_dpdk to do some cleanup at process exit, so let's also add one to call rte_eal_cleanup. This ensures all hugepage files are freed before the process exits. Fixes issue #2267. Signed-off-by: Jim Harris Change-Id: I8c93f503d77f35717b3d18a63ea49b31789dbc00 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10983 Community-CI: Broadcom CI Reviewed-by: Ben Walker Reviewed-by: Changpeng Liu Tested-by: SPDK CI Jenkins --- lib/env_dpdk/init.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/env_dpdk/init.c b/lib/env_dpdk/init.c index 3a77aa981a..495684a4e7 100644 --- a/lib/env_dpdk/init.c +++ b/lib/env_dpdk/init.c @@ -620,6 +620,15 @@ spdk_env_init(const struct spdk_env_opts *opts) return rc; } +__attribute__((destructor)) static void +dpdk_cleanup(void) +{ + /* Only call rte_eal_cleanup if the SPDK env library called rte_eal_init. */ + if (!g_external_init) { + rte_eal_cleanup(); + } +} + void spdk_env_fini(void) {