Re: [libvirt] [PATCH] util: Fix a bug in virResctrlMonitorGetStats

2018-11-20 Thread John Ferlan



On 11/19/18 9:10 PM, Wang Huaqiang wrote:
> The path argument of virFileIsDir should be a full name
> of file, pathname and filename. Fixed it by passing the
> full path name to virFileIsDir.
> 
> Signed-off-by: Wang Huaqiang 
> ---
>  src/util/virresctrl.c | 9 -
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
> index 7aeca9d..e0ad460 100644
> --- a/src/util/virresctrl.c
> +++ b/src/util/virresctrl.c
> @@ -2665,6 +2665,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
>  int ret = -1;
>  DIR *dirp = NULL;
>  char *datapath = NULL;
> +char *filepath = NULL;
>  struct dirent *ent = NULL;
>  virResctrlMonitorStatsPtr stat = NULL;
>  
> @@ -2684,13 +2685,18 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr 
> monitor,
>  while (virDirRead(dirp, , datapath) > 0) {
>  char *node_id = NULL;
>  
> +VIR_FREE(filepath);
> +
>  /* Looking for directory that contains resource utilization
>   * information file. The directory name is arranged in format
>   * "mon__". For example, "mon_L3_00" and
>   * "mon_L3_01" are two target directories for a two nodes system
>   * with resource utilization data file for each node respectively.
>   */
> -if (!virFileIsDir(ent->d_name))
> +if (virAsprintf(, "%s/%s", datapath, ent->d_name) < 0);

This didn't compile...  But easily fixed. when removing the ;

> +goto cleanup;
> +
> +if (!virFileIsDir(filepath))
>  continue;
>  
>  /* Looking for directory has a prefix 'mon_L' */
> @@ -2734,6 +2740,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
>  ret = 0;
>   cleanup:
>  VIR_FREE(datapath);
> +VIR_FREE(filepath);
>  VIR_FREE(stat);
>  VIR_DIR_CLOSE(dirp);
>  return ret;
> 

Usage of virFileIsDir straight is my mistake because of the build error
on some odd platform when using- "if (ent->d_type != DT_DIR)"...

Reviewed-by: John Ferlan 
(and pushed)

Tks -

John

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH] util: Fix a bug in virResctrlMonitorGetStats

2018-11-19 Thread Wang Huaqiang
The path argument of virFileIsDir should be a full name
of file, pathname and filename. Fixed it by passing the
full path name to virFileIsDir.

Signed-off-by: Wang Huaqiang 
---
 src/util/virresctrl.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
index 7aeca9d..e0ad460 100644
--- a/src/util/virresctrl.c
+++ b/src/util/virresctrl.c
@@ -2665,6 +2665,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
 int ret = -1;
 DIR *dirp = NULL;
 char *datapath = NULL;
+char *filepath = NULL;
 struct dirent *ent = NULL;
 virResctrlMonitorStatsPtr stat = NULL;
 
@@ -2684,13 +2685,18 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
 while (virDirRead(dirp, , datapath) > 0) {
 char *node_id = NULL;
 
+VIR_FREE(filepath);
+
 /* Looking for directory that contains resource utilization
  * information file. The directory name is arranged in format
  * "mon__". For example, "mon_L3_00" and
  * "mon_L3_01" are two target directories for a two nodes system
  * with resource utilization data file for each node respectively.
  */
-if (!virFileIsDir(ent->d_name))
+if (virAsprintf(, "%s/%s", datapath, ent->d_name) < 0);
+goto cleanup;
+
+if (!virFileIsDir(filepath))
 continue;
 
 /* Looking for directory has a prefix 'mon_L' */
@@ -2734,6 +2740,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
 ret = 0;
  cleanup:
 VIR_FREE(datapath);
+VIR_FREE(filepath);
 VIR_FREE(stat);
 VIR_DIR_CLOSE(dirp);
 return ret;
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list