[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] xl: sanity check for 'xl info'



Andre Przywara wrote:
> Yu Zhiguo wrote:
>> If error occurs in 'xl info', we'd better output an error message
>> rather than a broken result.
> Do you consider an incomplete output as broken? If I got this right, you
> want to make sure that you output everything or nothing with this patch.
> Wouldn't it be sufficient to just add the missing check for utsname()
> and output the other infos regardless? Was there a scenario where broken
> output was generated? So far I only see missing Xen support or missing
> privileges to cause errors.

It seems that xm will always output all or nothing, so I think we'd better
compatible with xm. But it isn't so important, just add sanity check now.

Regards
Yu Zhiguo

--------------------------------------

Add sanity check for 'xl info'.

Signed-off-by: Yu Zhiguo <yuzg@xxxxxxxxxxxxxx>

diff -r c87ec146229a -r c4a684b35c7b tools/libxl/xl.c
--- a/tools/libxl/xl.c  Fri Apr 23 15:04:26 2010 +0100
+++ b/tools/libxl/xl.c  Wed Apr 28 19:24:13 2010 +0800
@@ -2647,7 +2647,10 @@
     const libxl_version_info *info;
     int sched_id;
 
-    info = libxl_get_version_info(&ctx);
+    if (!(info = libxl_get_version_info(&ctx))) {
+        fprintf(stderr, "libxl_get_version_info failed.\n");
+        return;
+    }
     if ((sched_id = libxl_get_sched_id(&ctx)) < 0) {
         fprintf(stderr, "get_sched_id sysctl failed.\n");
         return;
@@ -2677,12 +2680,12 @@
 {
     struct utsname utsbuf;
 
-    uname(&utsbuf);
-
-    printf("host                   : %s\n", utsbuf.nodename);
-    printf("release                : %s\n", utsbuf.release);
-    printf("version                : %s\n", utsbuf.version);
-    printf("machine                : %s\n", utsbuf.machine);
+    if (uname(&utsbuf) != -1) {
+        printf("host                   : %s\n", utsbuf.nodename);
+        printf("release                : %s\n", utsbuf.release);
+        printf("version                : %s\n", utsbuf.version);
+        printf("machine                : %s\n", utsbuf.machine);
+    }
 
     return;
 }
@@ -2713,9 +2716,11 @@
         printf(" hvm_directio");
     printf("\n");
     vinfo = libxl_get_version_info(&ctx);
-    i = (1 << 20) / vinfo->pagesize;
-    printf("total_memory           : %lu\n", info.total_pages / i);
-    printf("free_memory            : %lu\n", info.free_pages / i);
+    if (vinfo) {
+        i = (1 << 20) / vinfo->pagesize;
+        printf("total_memory           : %lu\n", info.total_pages / i);
+        printf("free_memory            : %lu\n", info.free_pages / i);
+    }
 
     return;
 }


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.