[Libvir] [PATCH] patch for virsh domname <uuid> command error

Tatsuro Enokura fj7716hz at aa.jp.fujitsu.com
Fri Feb 23 09:59:41 UTC 2007


Hi,

Virsh domname <uuid> command for shut-off domain fails on xen-3.0.4.

I think that xm_internal.c shoud be modified.
But, it seems that xm_internal's structure isn't for xen-3.0.4,
and shut-off domain's information is got from xend.
I make a patch for xend_internal.c

The attached patch resolve this issue in the following way:

  1) If the domain's name can't be pulled out from
     the running domains list by uuid, request xend by
     "/xend/domains/<uuid>".
  2) If the domain's data can be teken from xend, pull out
     the domain's name.

Signed-off-by: Tatsuro Enokura <fj7716hz at aa.jp.fujitsu.com>

Thanks,
Tatsuro Enokura.

Index: src/xend_internal.c (libvirt-0.2.0)
===================================================================
--- xend_internal.c   2007-02-15 01:16:16.000000000 +0900
+++ xend_internal.c.new   2007-02-23 21:13:22.000000000 +0900
@@ -2759,6 +2759,8 @@ xenDaemonLookupByUUID(virConnectPtr conn
     char **tmp;
     unsigned char ident[VIR_UUID_BUFLEN];
     int id = -1;
+    struct sexpr *root = NULL;
+    char *domname = NULL;

     names = xenDaemonListDomainsOld(conn);
     tmp = names;
@@ -2779,6 +2781,26 @@ xenDaemonLookupByUUID(virConnectPtr conn
     }
     free(names);

+    if (name == NULL) {
+        char uuidstr[VIR_UUID_STRING_BUFLEN];
+        memset(uuidstr, '\0', VIR_UUID_STRING_BUFLEN);
+
+        snprintf(uuidstr, VIR_UUID_STRING_BUFLEN,
+
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+                 uuid[0], uuid[1], uuid[2], uuid[3],
+                 uuid[4], uuid[5], uuid[6], uuid[7],
+                 uuid[8], uuid[9], uuid[10], uuid[11],
+                 uuid[12], uuid[13], uuid[14], uuid[15]);
+        root = sexpr_get(conn, "/xend/domain/%s?detail=1", uuidstr);
+        if (root == NULL)
+            goto error;
+        domname = (char*)sexpr_node(root, "domain/name");
+        if (domname == NULL)
+            goto error;
+        name = strdup(domname);
+        id = -1;
+    }
+
     if (name == NULL)
         goto error;

@@ -2793,6 +2815,8 @@ xenDaemonLookupByUUID(virConnectPtr conn
     return (ret);

 error:
+    if (root != NULL)
+        sexpr_free(root);
     if (name != NULL)
         free(name);
     return (NULL);
===================================================================





More information about the libvir-list mailing list