DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eal: allow user to override DPDK runtime path
@ 2021-03-10 17:21 Stephen Hemminger
  2021-03-10 17:27 ` Bruce Richardson
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2021-03-10 17:21 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Stephen Hemminger

There can be cases such as containers or other runtime environments
where DPDK may not be able to access the default runtime path.
This patch introduces DPDK_RUNTIME_DIR as an environment variable
to allow controlling and overriding the path.

The example we have is DPDK application running in an untrusted
systemd container. In this case, it is not root, and XDG_RUNTIME_DIR
is not set (since it is not a user application), and /tmp is
blocked. The correct place for this application is to use /run.

In any case, hard coded path assumptions are a problem.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/linux/eal.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c
index 6c34ac890386..f2a5e73817d6 100644
--- a/lib/librte_eal/linux/eal.c
+++ b/lib/librte_eal/linux/eal.c
@@ -90,20 +90,26 @@ static const char *default_runtime_dir = "/var/run";
 int
 eal_create_runtime_dir(void)
 {
-	const char *directory = default_runtime_dir;
+	const char *directory;
 	const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR");
 	const char *fallback = "/tmp";
 	char run_dir[PATH_MAX];
 	char tmp[PATH_MAX];
 	int ret;
 
-	if (getuid() != 0) {
+	directory = getenv("DPDK_RUNTIME_DIR");
+	if (directory != NULL) {
+		RTE_LOG(DEBUG, EAL, "Using DPDK runtime directory: %s\n", directory);
+	} else if (getuid() == 0) {
+		directory = default_runtime_dir;
+	} else {
 		/* try XDG path first, fall back to /tmp */
 		if (xdg_runtime_dir != NULL)
 			directory = xdg_runtime_dir;
 		else
 			directory = fallback;
 	}
+
 	/* create DPDK subdirectory under runtime dir */
 	ret = snprintf(tmp, sizeof(tmp), "%s/dpdk", directory);
 	if (ret < 0 || ret == sizeof(tmp)) {
-- 
2.30.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-03-12 12:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-10 17:21 [dpdk-dev] [PATCH] eal: allow user to override DPDK runtime path Stephen Hemminger
2021-03-10 17:27 ` Bruce Richardson
2021-03-10 18:33   ` Stephen Hemminger
2021-03-11 12:13     ` Bruce Richardson
2021-03-12 10:56       ` Burakov, Anatoly
2021-03-12 12:05         ` Bruce Richardson
2021-03-12 12:49           ` Burakov, Anatoly

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).