[dpdk-dev] eal: move runtime dir creation after args parse

Message ID e2abe0583336c0c4fa38d4a4151c1ee9e05c99fc.1526381067.git.anatoly.burakov@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Anatoly Burakov May 15, 2018, 10:44 a.m. UTC
  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 <arybchenko@solarflare.com>

Signed-off-by: Anatoly Burakov <anatoly.burakov@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(-)
  

Comments

Andrew Rybchenko May 15, 2018, 11:36 a.m. UTC | #1
On 05/15/2018 01:44 PM, Anatoly Burakov wrote:
> 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 <arybchenko@solarflare.com>
>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>

I've tested it quickly and it solves the problem I observe.
I suppose it is OK that the directory remains after application exit.
  
Anatoly Burakov May 15, 2018, 12:16 p.m. UTC | #2
On 15-May-18 12:36 PM, Andrew Rybchenko wrote:
> On 05/15/2018 01:44 PM, Anatoly Burakov wrote:
>> 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 <arybchenko@solarflare.com>
>>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> 
> Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
> 
> I've tested it quickly and it solves the problem I observe.
> I suppose it is OK that the directory remains after application exit.
> 

Previously, all of the files that we were creating during runtime 
remained, so having a directory where all the files are is better than 
having a scattering of files :)

Thanks for testing!
  
Thomas Monjalon May 15, 2018, 2:03 p.m. UTC | #3
15/05/2018 14:16, Burakov, Anatoly:
> On 15-May-18 12:36 PM, Andrew Rybchenko wrote:
> > On 05/15/2018 01:44 PM, Anatoly Burakov wrote:
> >> 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 <arybchenko@solarflare.com>
> >>
> >> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> > 
> > Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
> > 
> > I've tested it quickly and it solves the problem I observe.
> > I suppose it is OK that the directory remains after application exit.
> > 
> 
> Previously, all of the files that we were creating during runtime 
> remained, so having a directory where all the files are is better than 
> having a scattering of files :)
> 
> Thanks for testing!

Applied, thanks
  

Patch

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;