[dpdk-dev,v8,07/10] eal: replace rte_panic instances in hugepage_info

Message ID 1524663944-30376-8-git-send-email-arnon@qwilt.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

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

Commit Message

Arnon Warshavsky April 25, 2018, 1:45 p.m. UTC
  replace panic calls with log and return value.

Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
---
 lib/librte_eal/linuxapp/eal/eal_hugepage_info.c | 37 +++++++++++++++++--------
 1 file changed, 26 insertions(+), 11 deletions(-)
  

Comments

Burakov, Anatoly April 25, 2018, 1:50 p.m. UTC | #1
On 25-Apr-18 2:45 PM, Arnon Warshavsky wrote:
> replace panic calls with log and return value.
> 
> Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
> ---

I think i've already acked this. You should keep acks etc. between 
versions (unless you're making significant enough changes that you think 
would invalidate a prior ack). Having acks makes it easier to track what 
still needs to be reviewed and what is good to go, and it makes it 
easier to see if the entire patchset is ready for apply.
  
Arnon Warshavsky April 25, 2018, 2:02 p.m. UTC | #2
> I think i've already acked this. You should keep acks etc. between
> versions (unless you're making significant enough changes that you think
> would invalidate a prior ack). Having acks makes it easier to track what
> still needs to be reviewed and what is good to go, and it makes it easier
> to see if the entire patchset is ready for apply.


Hmm, so unless I am missing yet another thing - this needs to be done
manually?
  
Burakov, Anatoly April 25, 2018, 2:14 p.m. UTC | #3
On 25-Apr-18 3:02 PM, Arnon Warshavsky wrote:
> 
>     I think i've already acked this. You should keep acks etc. between
>     versions (unless you're making significant enough changes that you
>     think would invalidate a prior ack). Having acks makes it easier to
>     track what still needs to be reviewed and what is good to go, and it
>     makes it easier to see if the entire patchset is ready for apply.
> 
> 
> Hmm, so unless I am missing yet another thing - this needs to be done 
> manually?
> 

Yes. Well, if someone series-acks your patch, you can do "git 
filter-branch", but for individual patches, yes, you need to do this 
manually by editing the commit message.
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
index db5aabd..797b8fa 100644
--- a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
+++ b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
@@ -145,8 +145,8 @@ 
 	return num_pages;
 }
 
-static uint64_t
-get_default_hp_size(void)
+static int
+get_default_hp_size(uint64_t *result)
 {
 	const char proc_meminfo[] = "/proc/meminfo";
 	const char str_hugepagesz[] = "Hugepagesize:";
@@ -155,8 +155,11 @@ 
 	unsigned long long size = 0;
 
 	FILE *fd = fopen(proc_meminfo, "r");
-	if (fd == NULL)
-		rte_panic("Cannot open %s\n", proc_meminfo);
+	if (fd == NULL) {
+		RTE_LOG(CRIT, EAL, "%s(): Cannot open %s\n",
+				__func__, proc_meminfo);
+		return -1;
+	}
 	while(fgets(buffer, sizeof(buffer), fd)){
 		if (strncmp(buffer, str_hugepagesz, hugepagesz_len) == 0){
 			size = rte_str_to_size(&buffer[hugepagesz_len]);
@@ -164,9 +167,13 @@ 
 		}
 	}
 	fclose(fd);
-	if (size == 0)
-		rte_panic("Cannot get default hugepage size from %s\n", proc_meminfo);
-	return size;
+	if (size == 0) {
+		RTE_LOG(CRIT, EAL, "%s(): Cannot get default hugepage size from %s\n",
+						 __func__, proc_meminfo);
+		return -1;
+	}
+	*result = size;
+	return 0;
 }
 
 static int
@@ -191,11 +198,19 @@ 
 	int retval = -1;
 
 	FILE *fd = fopen(proc_mounts, "r");
-	if (fd == NULL)
-		rte_panic("Cannot open %s\n", proc_mounts);
+	if (fd == NULL) {
+		RTE_LOG(CRIT, EAL, "%s(): Cannot open %s\n",
+				__func__, proc_mounts);
+		return -ENOENT;
+	}
 
-	if (default_size == 0)
-		default_size = get_default_hp_size();
+	if (default_size == 0) {
+		retval = get_default_hp_size(&default_size);
+		if (retval) {
+			fclose(fd);
+			return retval;
+		}
+	}
 
 	while (fgets(buf, sizeof(buf), fd)){
 		if (rte_strsplit(buf, sizeof(buf), splitstr, _FIELDNAME_MAX,