[libvirt] [PATCH]: Fix "virsh attach-disk" and "virsh attach-interface"

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

 



With the recent refactoring of the domain code, plus the changes with the Xend
code, a couple of bugs were introduced into the attach-disk and attach-interface
functionality.  This patch fixes 3 bugs:

1)  In xenDaemonAttachDevice(), there is a switch statement to determine which
of the xenDaemonFormatSxpr{Disk,Net} functions to call.  Unfortunately, the case
statements are all missing the corresponding "break", so we always fall-through
to the default error case.  This patch just adds the appropriate break statements.

2)  (minor) In xenDaemonDomainDefineXML (that's a mouthful!), there is a stray
"fprintf".  This is now converted to a proper virXendError().

3)  xenDaemonFormatSxpr{Disk,Net} were adding an extra (device to the front of
the sexpr expressions that xend did not expect (this is Xend on RHEL 5.2).
Because of this, the attaches would fail.  The patch fixes this by removing the
(device from the front, which makes attach-disk and attach-interface work again.

Signed-off-by: Chris Lalancette <clalance@xxxxxxxxxx>
Index: src/xend_internal.c
===================================================================
RCS file: /data/cvs/libvirt/src/xend_internal.c,v
retrieving revision 1.207
diff -u -r1.207 xend_internal.c
--- a/src/xend_internal.c	4 Aug 2008 06:33:25 -0000	1.207
+++ b/src/xend_internal.c	5 Aug 2008 09:59:57 -0000
@@ -3900,6 +3900,7 @@
                                     STREQ(def->os.type, "hvm") ? 1 : 0,
                                     priv->xendConfigVersion) < 0)
             goto cleanup;
+        break;
 
     case VIR_DOMAIN_DEVICE_NET:
         if (xenDaemonFormatSxprNet(domain->conn,
@@ -3908,6 +3909,7 @@
                                    STREQ(def->os.type, "hvm") ? 1 : 0,
                                    priv->xendConfigVersion) < 0)
             goto cleanup;
+        break;
 
     default:
         virXendError(domain->conn, VIR_ERR_NO_SUPPORT, "%s",
@@ -4292,7 +4294,8 @@
     ret = xend_op(conn, "", "op", "new", "config", sexpr, NULL);
     VIR_FREE(sexpr);
     if (ret != 0) {
-        fprintf(stderr, _("Failed to create inactive domain %s\n"), name);
+        virXendError(conn, VIR_ERR_XEN_CALL,
+                     _("Failed to create inactive domain %s\n"), name);
         goto error;
     }
 
@@ -5029,7 +5032,6 @@
         xendConfigVersion == 1)
         return 0;
 
-    virBufferAddLit(buf, "(device ");
     /* Normally disks are in a (device (vbd ...)) block
      * but blktap disks ended up in a differently named
      * (device (tap ....)) block.... */
@@ -5083,7 +5085,7 @@
     else
         virBufferAddLit(buf, "(mode 'w')");
 
-    virBufferAddLit(buf, "))");
+    virBufferAddLit(buf, ")");
 
     return 0;
 }
@@ -5117,7 +5119,7 @@
         return -1;
     }
 
-    virBufferAddLit(buf, "(device (vif ");
+    virBufferAddLit(buf, "(vif ");
 
     virBufferVSprintf(buf,
                       "(mac '%02x:%02x:%02x:%02x:%02x:%02x')",
@@ -5177,7 +5179,7 @@
     if ((hvm) && (xendConfigVersion < 4))
         virBufferAddLit(buf, "(type ioemu)");
 
-    virBufferAddLit(buf, "))");
+    virBufferAddLit(buf, ")");
 
     return 0;
 }
--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]