# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1302167211 -3600
# Node ID 6162ae4cc9a7fae505f6b081a6698ecdd94418c2
# Parent 40b0954cb5d9bdd0b943963afb79914ba5cb08c9
libxl: Drop internal DEVICE_TAP backend type
There is no such thing with blktap2, the backend in that case is PHY.
libxl_device_disk_del was just plain wrong in this regard, fix it to
select the appropriate backend_kind.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r 40b0954cb5d9 -r 6162ae4cc9a7 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu Apr 07 10:06:51 2011 +0100
+++ b/tools/libxl/libxl.c Thu Apr 07 10:06:51 2011 +0100
@@ -950,7 +950,6 @@ int libxl_device_disk_add(libxl_ctx *ctx
flexarray_t *front;
flexarray_t *back;
char *dev;
- char *backend_type;
int devid;
libxl__device device;
int major, minor, rc;
@@ -970,7 +969,6 @@ int libxl_device_disk_add(libxl_ctx *ctx
goto out_free;
}
- backend_type = libxl__device_disk_string_of_backend(disk->backend);
devid = libxl__device_disk_dev_number(disk->vdev, NULL, NULL);
if (devid==-1) {
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Invalid or unsupported"
@@ -1021,8 +1019,6 @@ int libxl_device_disk_add(libxl_ctx *ctx
libxl__device_disk_string_of_format(disk->format),
disk->pdev_path));
- backend_type = "phy";
-
/* now create a phy device to export the device to the guest */
goto do_backend_phy;
@@ -1051,7 +1047,7 @@ int libxl_device_disk_add(libxl_ctx *ctx
flexarray_append(back, "dev");
flexarray_append(back, disk->vdev);
flexarray_append(back, "type");
- flexarray_append(back, backend_type);
+ flexarray_append(back,
libxl__device_disk_string_of_backend(disk->backend));
flexarray_append(back, "mode");
flexarray_append(back, disk->readwrite ? "w" : "r");
@@ -1093,14 +1089,30 @@ int libxl_device_disk_del(libxl_ctx *ctx
devid = libxl__device_disk_dev_number(disk->vdev, NULL, NULL);
device.backend_domid = disk->backend_domid;
device.backend_devid = devid;
- device.backend_kind =
- (disk->backend == DISK_BACKEND_PHY) ? DEVICE_VBD : DEVICE_TAP;
+
+ switch (disk->backend) {
+ case DISK_BACKEND_PHY:
+ device.backend_kind = DEVICE_VBD;
+ break;
+ case DISK_BACKEND_TAP:
+ device.backend_kind = DEVICE_VBD;
+ break;
+ case DISK_BACKEND_QDISK:
+ device.backend_kind = DEVICE_QDISK;
+ break;
+ default:
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "unrecognized disk backend type:
%d\n",
+ disk->backend);
+ rc = ERROR_INVAL;
+ goto out_free;
+ }
device.domid = domid;
device.devid = devid;
device.kind = DEVICE_VBD;
rc = libxl__device_del(&gc, &device, wait);
xs_rm(ctx->xsh, XBT_NULL, libxl__device_backend_path(&gc, &device));
xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, &device));
+out_free:
libxl__free_all(&gc);
return rc;
}
diff -r 40b0954cb5d9 -r 6162ae4cc9a7 tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c Thu Apr 07 10:06:51 2011 +0100
+++ b/tools/libxl/libxl_device.c Thu Apr 07 10:06:51 2011 +0100
@@ -31,7 +31,6 @@
static const char *string_of_kinds[] = {
[DEVICE_VIF] = "vif",
[DEVICE_VBD] = "vbd",
- [DEVICE_TAP] = "tap",
[DEVICE_QDISK] = "qdisk",
[DEVICE_PCI] = "pci",
[DEVICE_VFB] = "vfb",
@@ -135,7 +134,7 @@ char *libxl__device_disk_string_of_backe
{
switch (backend) {
case DISK_BACKEND_QDISK: return "qdisk";
- case DISK_BACKEND_TAP: return "tap";
+ case DISK_BACKEND_TAP: return "phy";
case DISK_BACKEND_PHY: return "phy";
default: return NULL;
}
diff -r 40b0954cb5d9 -r 6162ae4cc9a7 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Thu Apr 07 10:06:51 2011 +0100
+++ b/tools/libxl/libxl_internal.h Thu Apr 07 10:06:51 2011 +0100
@@ -97,7 +97,6 @@ struct libxl__ctx {
typedef enum {
DEVICE_VIF = 1,
DEVICE_VBD,
- DEVICE_TAP,
DEVICE_QDISK,
DEVICE_PCI,
DEVICE_VFB,
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|