[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [xen-devel][PATCH] xl - Special case vhd images validation
Resending this patch as the one I sent earlier won't apply given the changes we just made to "[PATCH 2/5] Xl interface change plus changes to code it impacts". Description - Special case how we validate vhd image files. Without this patch when tap:aio:vhd prefixed image files are specified in the config file, disk validation and thus vm creation will fail. Signed-off-by: Kamala Narasimhan <kamala.narasimhan@xxxxxxxxxx> Kamala diff -r a60ad215181c tools/libxl/libxl.c --- a/tools/libxl/libxl.c Mon Feb 14 15:15:19 2011 -0500 +++ b/tools/libxl/libxl.c Mon Feb 14 15:18:33 2011 -0500 @@ -863,19 +863,30 @@ int libxl_vncviewer_exec(libxl_ctx *ctx, /******************************************************************************/ -static int validate_virtual_disk(libxl_ctx *ctx, char *file_name, - libxl_disk_backend backend_type, libxl_disk_format format) +static int validate_virtual_disk(libxl_ctx *ctx, char *file_name, + libxl_device_disk *disk) { struct stat stat_buf; + char *delimiter; - if ((file_name[0] == '\0') && (format == DISK_FORMAT_EMPTY)) + if (disk->format == DISK_FORMAT_EMPTY) return 0; + + if (disk->format == DISK_FORMAT_RAW) { + delimiter = strchr(file_name, ':'); + if (delimiter) { + if (!strncmp(file_name, "vhd:", sizeof("vhd:")-1)) { + disk->format = DISK_FORMAT_VHD; + file_name = ++delimiter; + } + } + } if ( stat(file_name, &stat_buf) != 0 ) { LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "failed to stat %s", file_name); return ERROR_INVAL; } - if (backend_type == DISK_BACKEND_PHY) { + if (disk->backend == DISK_BACKEND_PHY) { if ( !(S_ISBLK(stat_buf.st_mode)) ) { LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Virtual disk %s is not a block device!\n", file_name); @@ -899,8 +910,7 @@ int libxl_device_disk_add(libxl_ctx *ctx libxl__device device; int major, minor, rc; - rc = validate_virtual_disk(ctx, disk->pdev_path, disk->backend, - disk->format); + rc = validate_virtual_disk(ctx, disk->pdev_path, disk); if (rc) return rc; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |