[libvirt] [PATCH 4/4] xen: Return tap2 for tap2 disks

Philipp Hahn hahn at univention.de
Wed Oct 12 08:55:37 UTC 2011


For some versions of Xen the difference between "tap" and "tap2" is
important. When converting back from xen-sxpr to libvirt-xml, that
information is lost, which breaks re-defining the domain using that
data.

Explicitly return "tap2" for disks defines as "device/tap2".

Signed-off-by: Philipp Hahn <hahn at univention.de>
---
<https://forge.univention.org/bugzilla/show_bug.cgi?id=22017>

 src/xenxs/xen_sxpr.c |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c
index 038c6bb..4cfa9e8 100644
--- a/src/xenxs/xen_sxpr.c
+++ b/src/xenxs/xen_sxpr.c
@@ -391,14 +391,19 @@ xenParseSxprDisks(virDomainDefPtr def,
                     goto error;
                 }
 
-                if (VIR_ALLOC_N(disk->driverName, (offset-src)+1) < 0)
-                    goto no_memory;
-                if (virStrncpy(disk->driverName, src, offset-src,
-                              (offset-src)+1) == NULL) {
-                    XENXS_ERROR(VIR_ERR_INTERNAL_ERROR,
-                                 _("Driver name %s too big for destination"),
-                                 src);
-                    goto error;
+                if (sexpr_lookup(node, "device/tap2") && STRPREFIX(src, "tap:")) {
+                    if (!(disk->driverName = strdup("tap2")))
+                        goto error;
+                } else {
+                        if (VIR_ALLOC_N(disk->driverName, (offset-src)+1) < 0)
+                            goto no_memory;
+                        if (virStrncpy(disk->driverName, src, offset-src,
+                                      (offset-src)+1) == NULL) {
+                            XENXS_ERROR(VIR_ERR_INTERNAL_ERROR,
+                                         _("Driver name %s too big for destination"),
+                                         src);
+                            goto error;
+                        }
                 }
 
                 src = offset + 1;
-- 
1.7.1




More information about the libvir-list mailing list