The intention of the original code was to create runtime data
directory as early as possible, however it was moved too early,
before the arguments were parsed, resulting in --file-prefix
option essentially not working.

Fix this by moving eal_create_runtime_dir() to after command
line arguments parsing.

Fixes: 56236363b481 ("eal: add directory for runtime data")

Reported-by: Andrew Rybchenko <arybche...@solarflare.com>

Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
---
 lib/librte_eal/bsdapp/eal/eal.c   | 14 +++++++-------
 lib/librte_eal/linuxapp/eal/eal.c | 14 +++++++-------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index c890bfe..7f8475e 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -586,13 +586,6 @@ rte_eal_init(int argc, char **argv)
        /* set log level as early as possible */
        eal_log_level_parse(argc, argv);
 
-       /* create runtime data directory */
-       if (eal_create_runtime_dir() < 0) {
-               rte_eal_init_alert("Cannot create runtime directory\n");
-               rte_errno = EACCES;
-               return -1;
-       }
-
        if (rte_eal_cpu_init() < 0) {
                rte_eal_init_alert("Cannot detect lcores.");
                rte_errno = ENOTSUP;
@@ -607,6 +600,13 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
+       /* create runtime data directory */
+       if (eal_create_runtime_dir() < 0) {
+               rte_eal_init_alert("Cannot create runtime directory\n");
+               rte_errno = EACCES;
+               return -1;
+       }
+
        /* FreeBSD always uses legacy memory model */
        internal_config.legacy_mem = true;
 
diff --git a/lib/librte_eal/linuxapp/eal/eal.c 
b/lib/librte_eal/linuxapp/eal/eal.c
index bed5823..150d5dd 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -803,13 +803,6 @@ rte_eal_init(int argc, char **argv)
        /* set log level as early as possible */
        eal_log_level_parse(argc, argv);
 
-       /* create runtime data directory */
-       if (eal_create_runtime_dir() < 0) {
-               rte_eal_init_alert("Cannot create runtime directory\n");
-               rte_errno = EACCES;
-               return -1;
-       }
-
        if (rte_eal_cpu_init() < 0) {
                rte_eal_init_alert("Cannot detect lcores.");
                rte_errno = ENOTSUP;
@@ -824,6 +817,13 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
+       /* create runtime data directory */
+       if (eal_create_runtime_dir() < 0) {
+               rte_eal_init_alert("Cannot create runtime directory\n");
+               rte_errno = EACCES;
+               return -1;
+       }
+
        if (eal_plugins_init() < 0) {
                rte_eal_init_alert("Cannot init plugins\n");
                rte_errno = EINVAL;
-- 
2.7.4

Reply via email to