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

[Xen-devel] [PATCH] tools/xl: show shutdown reason code, improve xl list heading



Previously, xl list would not reveal the shutdown reason code unless
it was SHUTDOWN_crashed.  This is unfortunate; it makes it hard for
scripts which use xl to tell what's going on.

In this patch:

 * xl list shows the reason code as a single letter if it is
   any of the defined values from sched.h:
       -   poweroff or domain not shut down
       r   reboot
       s   suspend
       c   crashed
       w   watchdog
   This is not 100% backward-compatible with xm but I think it's a
   justifiable improvement.  It would be nice to make the same change
   to xm.

 * xl list -v shows the full numeric reason code in hex, or "-" if the
   domain is not shut down.

 * xl list -v has column headings for the UUID and numeric reason
   code.  The heading for the reason code overlaps with the UUID a bit.
   These headings are intended for human readers; scripts can parse
   the output by breaking on whitespace.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

diff -r 899131a8f9d2 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Mon Nov 22 08:29:03 2010 +0000
+++ b/tools/libxl/xl_cmdimpl.c  Mon Nov 22 12:41:35 2010 +0000
@@ -2477,11 +2477,16 @@ static void list_domains(int verbose, co
 static void list_domains(int verbose, const libxl_dominfo *info, int nb_domain)
 {
     int i;
-
-    printf("Name                                        ID   Mem 
VCPUs\tState\tTime(s)\n");
+    static const char shutdown_reason_letters[]= "-rscw";
+
+    printf("Name                                        ID   Mem 
VCPUs\tState\tTime(s)");
+    if (verbose) printf("   UUID                            Reason-Code");
+    printf("\n");
     for (i = 0; i < nb_domain; i++) {
         char *domname;
+        unsigned shutdown_reason;
         domname = libxl_domid_to_name(&ctx, info[i].domid);
+        shutdown_reason = info[i].shutdown ? info[i].shutdown_reason : 0;
         printf("%-40s %5d %5lu %5d     %c%c%c%c%c%c  %8.1f",
                 domname,
                 info[i].domid,
@@ -2491,12 +2496,17 @@ static void list_domains(int verbose, co
                 info[i].blocked ? 'b' : '-',
                 info[i].paused ? 'p' : '-',
                 info[i].shutdown ? 's' : '-',
-                info[i].shutdown_reason == SHUTDOWN_crash ? 'c' : '-',
+                (shutdown_reason >= 0 &&
+                 shutdown_reason < sizeof(shutdown_reason_letters)-1
+                 ? shutdown_reason_letters[shutdown_reason] : '?'),
                 info[i].dying ? 'd' : '-',
                 ((float)info[i].cpu_time / 1e9));
         free(domname);
-        if (verbose)
+        if (verbose) {
             printf(" " LIBXL_UUID_FMT, LIBXL_UUID_BYTES(info[i].uuid));
+           if (info[i].shutdown) printf(" %8x", shutdown_reason);
+           else printf(" %8s", "-");
+       }
         putchar('\n');
     }
 }

_______________________________________________
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®.