[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 |