[dpdk-dev,v3,08/13] eal: replace rte_panic instances in hugepage_info

Message ID 1523644244-17511-9-git-send-email-arnon@qwilt.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply patch file failure

Commit Message

Arnon Warshavsky April 13, 2018, 6:30 p.m. UTC
  replace panic calls with log and retrun value.

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

Comments

Anatoly Burakov April 16, 2018, 11:30 a.m. UTC | #1
On 13-Apr-18 7:30 PM, Arnon Warshavsky wrote:
> replace panic calls with log and retrun value.
> 
> Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
> ---
>   lib/librte_eal/linuxapp/eal/eal_hugepage_info.c | 21 +++++++++++++++------
>   1 file changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
> index 8bbf771..43af5b5 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
> @@ -80,8 +80,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 0;
> +	}
>   	while(fgets(buffer, sizeof(buffer), fd)){
>   		if (strncmp(buffer, str_hugepagesz, hugepagesz_len) == 0){
>   			size = rte_str_to_size(&buffer[hugepagesz_len]);
> @@ -89,8 +92,11 @@
>   		}
>   	}
>   	fclose(fd);
> -	if (size == 0)
> -		rte_panic("Cannot get default hugepage size from %s\n", proc_meminfo);
> +	if (size == 0) {
> +		RTE_LOG(CRIT, EAL, "%s(): Cannot get default hugepage size from %s\n",
> +						 __func__, proc_meminfo);
> +		return 0;
> +	}
>   	return size;

If returning default hugepage size of 0 is now a possibility, the 
calling code needs to be able to handle that. Perhaps rewrite it as 
returning int, and accepting pointer to pagesz? e.g.

static int get_default_hp_size(uint64_t *page_sz)

and fix the code below to handle error in reading default page size?

>   }
>   
> @@ -116,8 +122,11 @@
>   	char *retval = NULL;
>   
>   	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 NULL;
> +	}
>   
>   	if (default_size == 0)
>   		default_size = get_default_hp_size();
>
  
Arnon Warshavsky April 16, 2018, 2:45 p.m. UTC | #2
Thanks Anatoly
Will do

On Mon, Apr 16, 2018 at 2:30 PM, Burakov, Anatoly <anatoly.burakov@intel.com
> wrote:

> On 13-Apr-18 7:30 PM, Arnon Warshavsky wrote:
>
>> replace panic calls with log and retrun value.
>>
>> Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
>> ---
>>   lib/librte_eal/linuxapp/eal/eal_hugepage_info.c | 21
>> +++++++++++++++------
>>   1 file changed, 15 insertions(+), 6 deletions(-)
>>
>> diff --git a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
>> b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
>> index 8bbf771..43af5b5 100644
>> --- a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
>> +++ b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
>> @@ -80,8 +80,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 0;
>> +       }
>>         while(fgets(buffer, sizeof(buffer), fd)){
>>                 if (strncmp(buffer, str_hugepagesz, hugepagesz_len) == 0){
>>                         size = rte_str_to_size(&buffer[hugepagesz_len]);
>> @@ -89,8 +92,11 @@
>>                 }
>>         }
>>         fclose(fd);
>> -       if (size == 0)
>> -               rte_panic("Cannot get default hugepage size from %s\n",
>> proc_meminfo);
>> +       if (size == 0) {
>> +               RTE_LOG(CRIT, EAL, "%s(): Cannot get default hugepage
>> size from %s\n",
>> +                                                __func__, proc_meminfo);
>> +               return 0;
>> +       }
>>         return size;
>>
>
> If returning default hugepage size of 0 is now a possibility, the calling
> code needs to be able to handle that. Perhaps rewrite it as returning int,
> and accepting pointer to pagesz? e.g.
>
> static int get_default_hp_size(uint64_t *page_sz)
>
> and fix the code below to handle error in reading default page size?
>
>   }
>>   @@ -116,8 +122,11 @@
>>         char *retval = NULL;
>>         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 NULL;
>> +       }
>>         if (default_size == 0)
>>                 default_size = get_default_hp_size();
>>
>>
> --
> Thanks,
> Anatoly
>
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
index 8bbf771..43af5b5 100644
--- a/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
+++ b/lib/librte_eal/linuxapp/eal/eal_hugepage_info.c
@@ -80,8 +80,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 0;
+	}
 	while(fgets(buffer, sizeof(buffer), fd)){
 		if (strncmp(buffer, str_hugepagesz, hugepagesz_len) == 0){
 			size = rte_str_to_size(&buffer[hugepagesz_len]);
@@ -89,8 +92,11 @@ 
 		}
 	}
 	fclose(fd);
-	if (size == 0)
-		rte_panic("Cannot get default hugepage size from %s\n", proc_meminfo);
+	if (size == 0) {
+		RTE_LOG(CRIT, EAL, "%s(): Cannot get default hugepage size from %s\n",
+						 __func__, proc_meminfo);
+		return 0;
+	}
 	return size;
 }
 
@@ -116,8 +122,11 @@ 
 	char *retval = NULL;
 
 	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 NULL;
+	}
 
 	if (default_size == 0)
 		default_size = get_default_hp_size();