From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kamala Narasimhan Subject: [PATCH] xl - Special case vhd images validation Date: Thu, 10 Feb 2011 12:16:06 -0500 Message-ID: <4D541D56.4090109@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080601080708030704050101" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------080601080708030704050101 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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. IanJ - Since we decided to not merge disk changes patch 3-5, we need this. IanC - This patch has the change you suggested to look for DISK_FORMAT_EMPTY. Signed-off-by: Kamala Narasimhan Kamala --------------080601080708030704050101 Content-Type: text/plain; name="xl-validate-vhd" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xl-validate-vhd" diff -r 9e87dfb60bc6 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Thu Feb 10 11:49:27 2011 -0500 +++ b/tools/libxl/libxl.c Thu Feb 10 11:50:25 2011 -0500 @@ -864,18 +864,29 @@ 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) + 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; --------------080601080708030704050101 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------080601080708030704050101--