From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Subject: [RFC Patch v2 42/45] support blktap colo in xl: Date: Fri, 8 Aug 2014 15:01:41 +0800 Message-ID: <1407481305-19808-43-git-send-email-wency@cn.fujitsu.com> References: <1407481305-19808-1-git-send-email-wency@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1407481305-19808-1-git-send-email-wency@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen devel Cc: Ian Campbell , Wen Congyang , Ian Jackson , Jiang Yunhong , Dong Eddie , Yang Hongyang , Lai Jiangshan List-Id: xen-devel@lists.xenproject.org With this patch, we can use blktap remus 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 --- 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/libxlu_disk_l.l | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) 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 a7ce6d2..a3cc768 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -689,7 +689,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 6bcb8b6..3fe0812 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/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