|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC Patch v3 18/22] support blktap COLO in xl:
With this patch, we can use blktap COLO like this:
disk = [
'format=colo,devtype=disk,access=w,vdev=hda,backendtype=tap,target=192.168.3.1:9000|aio:filename'
]
Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx>
Cc: Shriram Rajagopalan <rshriram@xxxxxxxxx>
---
tools/libxl/libxl.c | 3 ++-
tools/libxl/libxl_blktap2.c | 6 ++++--
tools/libxl/libxl_device.c | 4 +++-
tools/libxl/libxl_dm.c | 3 ++-
tools/libxl/libxl_types.idl | 1 +
tools/libxl/libxl_utils.c | 2 ++
tools/libxl/libxlu_disk_l.l | 1 +
7 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 39a1879..717df75 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -2414,7 +2414,8 @@ static int libxl__device_disk_from_xs_be(libxl__gc *gc,
}
if (disk->format != LIBXL_DISK_FORMAT_VHD &&
disk->format != LIBXL_DISK_FORMAT_RAW &&
- disk->format != LIBXL_DISK_FORMAT_REMUS) {
+ disk->format != LIBXL_DISK_FORMAT_REMUS &&
+ disk->format != LIBXL_DISK_FORMAT_COLO) {
LOG(ERROR, "unsupported tapdisk format: %s\n", tmp);
free(tmp);
goto cleanup;
diff --git a/tools/libxl/libxl_blktap2.c b/tools/libxl/libxl_blktap2.c
index 7bbdfc8..cde0dee 100644
--- a/tools/libxl/libxl_blktap2.c
+++ b/tools/libxl/libxl_blktap2.c
@@ -32,7 +32,8 @@ char *libxl__blktap_devpath(libxl__gc *gc,
tap_list_t tap;
int err;
- if (format == LIBXL_DISK_FORMAT_REMUS)
+ if (format == LIBXL_DISK_FORMAT_REMUS ||
+ format == LIBXL_DISK_FORMAT_COLO)
if (libxl__blktap_get_real_format(gc, disk, format) < 0)
return NULL;
@@ -94,7 +95,8 @@ libxl_disk_format libxl__blktap_get_real_format(libxl__gc *gc,
{
const char *type;
- if (format != LIBXL_DISK_FORMAT_REMUS)
+ if (format != LIBXL_DISK_FORMAT_REMUS &&
+ format != LIBXL_DISK_FORMAT_COLO)
return format;
/* The format of disk: ip:port|xxx:file */
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index a460d33..6e23858 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -212,7 +212,8 @@ static int disk_try_backend(disk_try_backend_args *a,
}
if (!(a->disk->format == LIBXL_DISK_FORMAT_RAW ||
a->disk->format == LIBXL_DISK_FORMAT_VHD ||
- a->disk->format == LIBXL_DISK_FORMAT_REMUS)) {
+ a->disk->format == LIBXL_DISK_FORMAT_REMUS ||
+ a->disk->format == LIBXL_DISK_FORMAT_COLO)) {
goto bad_format;
}
return backend;
@@ -297,6 +298,7 @@ char *libxl__device_disk_string_of_format(libxl_disk_format
format)
case LIBXL_DISK_FORMAT_RAW:
case LIBXL_DISK_FORMAT_EMPTY: return "aio";
case LIBXL_DISK_FORMAT_REMUS: return "remus";
+ case LIBXL_DISK_FORMAT_COLO: return "colo";
default: return NULL;
}
}
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index bf11973..c9ccb02 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -727,7 +727,8 @@ static char ** libxl__build_device_model_args_new(libxl__gc
*gc,
continue;
}
- if (disks[i].format == LIBXL_DISK_FORMAT_REMUS) {
+ if (disks[i].format == LIBXL_DISK_FORMAT_REMUS||
+ disks[i].format == LIBXL_DISK_FORMAT_COLO) {
real_format = libxl__blktap_get_real_format(gc,
disks[i].pdev_path,
disks[i].format);
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index a8be7ba..325d41b 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -88,6 +88,7 @@ libxl_disk_format = Enumeration("disk_format", [
(4, "RAW"),
(5, "EMPTY"),
(6, "REMUS"),
+ (7, "COLO"),
])
libxl_disk_backend = Enumeration("disk_backend", [
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index ad7cf92..6c35ba8 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -332,6 +332,8 @@ int libxl_string_to_format(libxl_ctx *ctx, char *s,
libxl_disk_format *format)
*format = LIBXL_DISK_FORMAT_VHD;
} else if (!strcmp(s, "remus")) {
*format = LIBXL_DISK_FORMAT_REMUS;
+ } else if (!strcmp(s, "colo")) {
+ *format = LIBXL_DISK_FORMAT_COLO;
} else {
*format = LIBXL_DISK_FORMAT_UNKNOWN;
rc = ERROR_FAIL;
diff --git a/tools/libxl/libxlu_disk_l.l b/tools/libxl/libxlu_disk_l.l
index d9ff8a1..a6028b7 100644
--- a/tools/libxl/libxlu_disk_l.l
+++ b/tools/libxl/libxlu_disk_l.l
@@ -103,6 +103,7 @@ static void setformat(DiskParseContext *dpc, const char
*str) {
else if (!strcmp(str,"vhd")) DSET(dpc,format,FORMAT,str,VHD);
else if (!strcmp(str,"empty")) DSET(dpc,format,FORMAT,str,EMPTY);
else if (!strcmp(str,"remus")) DSET(dpc,format,FORMAT,str,REMUS);
+ else if (!strcmp(str,"colo")) DSET(dpc,format,FORMAT,str,COLO);
else xlu__disk_err(dpc,str,"unknown value for format");
}
--
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 |