[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl: convert an empty tap disk into a qdisk
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1302277139 -3600 # Node ID d9d8e0ceaf46a43bf149d50295c51ad40a58ce7e # Parent 67b8c2a99f4cce523905cea52cd48ae02421fa27 libxl: convert an empty tap disk into a qdisk I'm not sure that empty disks which are is_cdrom are especially valid, or that a cdrom can ever be handled by tapdisk anyway but try to do something sane since it seems that xl's parse_disk_config() routine could potentially generate such a configuration (although whether from a valid input string or not I'm not sure). Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- diff -r 67b8c2a99f4c -r d9d8e0ceaf46 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Fri Apr 08 16:38:36 2011 +0100 +++ b/tools/libxl/libxl.c Fri Apr 08 16:38:59 2011 +0100 @@ -983,6 +983,14 @@ if (disk->backend == DISK_BACKEND_TAP && !libxl__blktap_enabled(&gc)) disk->backend = DISK_BACKEND_QDISK; + /* + * blktap cannot handle empty disks (aka cdroms). Fall back to + * qdisk because qemu-xen creates the disk based on the xenstore + * entries. + */ + if (disk->backend == DISK_BACKEND_TAP && disk->format == DISK_FORMAT_EMPTY) + disk->backend == DISK_BACKEND_QDISK; + switch (disk->backend) { case DISK_BACKEND_PHY: libxl__device_physdisk_major_minor(disk->pdev_path, &major, &minor); @@ -995,7 +1003,7 @@ device.backend_kind = DEVICE_VBD; break; case DISK_BACKEND_TAP: - if (disk->format != DISK_FORMAT_EMPTY) { + { const char *dev = libxl__blktap_devpath(&gc, disk->pdev_path, disk->format); if (!dev) { @@ -1003,8 +1011,8 @@ goto out_free; } flexarray_append(back, "tapdisk-params"); - flexarray_append(back, libxl__sprintf(&gc, "%s:%s", - libxl__device_disk_string_of_format(disk->format), + flexarray_append(back, libxl__sprintf(&gc, "%s:%s", + libxl__device_disk_string_of_format(disk->format), disk->pdev_path)); flexarray_append(back, "params"); flexarray_append(back, libxl__strdup(&gc, dev)); @@ -1013,8 +1021,6 @@ flexarray_append(back, "physical-device"); flexarray_append(back, libxl__sprintf(&gc, "%x:%x", major, minor)); device.backend_kind = DEVICE_VBD; - - break; } break; case DISK_BACKEND_QDISK: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |