xen: Return tap2 for tap2 disks

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 defined as "device/tap2".

Signed-off-by: Philipp Hahn <hahn@univention.de>
This commit is contained in:
Philipp Hahn 2011-10-12 10:55:37 +02:00 committed by Eric Blake
parent c2969ec7ae
commit c490b469ce

View File

@ -397,14 +397,20 @@ 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 no_memory;
} 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;