|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC Patch v4 8/9] store correct format into tapdisk-params/params
If the format is raw, we store aio into tapdisk-params/params.
And we cannot use the API libxl_disk_format_from_string()
to get the format from the string.
The API libxl__device_disk_string_of_format() is just
for blktap2, which needs to pass aio instead of raw to
tapdisk2. So use libxl_disk_format_to_string() to
instead of libxl__device_disk_string_of_format().
Also update libxl__device_destroy_tapdisk() due to
tapdisk-params changed.
Note: the content of tapdisk-params/params has been changed...
Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/libxl/libxl.c | 7 ++++---
tools/libxl/libxl_blktap2.c | 12 +++++++++++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 77672d0..aa9345b 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -2340,7 +2340,7 @@ static void device_disk_add(libxl__egc *egc, uint32_t
domid,
}
flexarray_append(back, "tapdisk-params");
flexarray_append(back, libxl__sprintf(gc, "%s:%s",
- libxl__device_disk_string_of_format(disk->format),
+ libxl_disk_format_to_string(disk->format),
disk->pdev_path));
/* tap backends with scripts are rejected by
@@ -2352,7 +2352,8 @@ static void device_disk_add(libxl__egc *egc, uint32_t
domid,
case LIBXL_DISK_BACKEND_QDISK:
flexarray_append(back, "params");
flexarray_append(back, libxl__sprintf(gc, "%s:%s",
-
libxl__device_disk_string_of_format(disk->format), disk->pdev_path));
+ libxl_disk_format_to_string(disk->format),
+ disk->pdev_path));
assert(device->backend_kind == LIBXL__DEVICE_KIND_QDISK);
break;
default:
@@ -2744,7 +2745,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid,
libxl_device_disk *disk,
if (disk->format != LIBXL_DISK_FORMAT_EMPTY)
flexarray_append_pair(insert, "params",
GCSPRINTF("%s:%s",
- libxl__device_disk_string_of_format(disk->format),
+ libxl_disk_format_to_string(disk->format),
disk->pdev_path));
else
flexarray_append_pair(insert, "params", "");
diff --git a/tools/libxl/libxl_blktap2.c b/tools/libxl/libxl_blktap2.c
index 2053403..9b7a5fc 100644
--- a/tools/libxl/libxl_blktap2.c
+++ b/tools/libxl/libxl_blktap2.c
@@ -54,8 +54,9 @@ char *libxl__blktap_devpath(libxl__gc *gc,
int libxl__device_destroy_tapdisk(libxl__gc *gc, const char *params)
{
char *type, *disk;
- int err;
+ int err, rc;
tap_list_t tap;
+ libxl_disk_format format;
type = libxl__strdup(gc, params);
@@ -67,6 +68,15 @@ int libxl__device_destroy_tapdisk(libxl__gc *gc, const char
*params)
*disk++ = '\0';
+ /* type may be raw */
+ rc = libxl_disk_format_from_string(type, &format);
+ if (rc < 0) {
+ LOG(ERROR, "invalid disk type %s", type);
+ return ERROR_FAIL;
+ }
+
+ type = libxl__device_disk_string_of_format(format);
+
err = tap_ctl_find(type, disk, &tap);
if (err < 0) {
/* returns -errno */
--
1.9.3
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |