[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: Special case tap/aio for disk validation
Current disk validation code will fail when the disk file path is prefixed with tap:aio:vhd in the disk configuration file option. This patch special cases tap:aio validation. Note: It appears qcow/qcow2 file format does not work with the current tapdisk. So, I am checking only for vhd file format. If there are other formats to check also, let me know. Signed-off-by: Kamala Narasimhan <kamala.narasimhan@xxxxxxxxxx> Kamala diff -r 67d5b8004947 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Wed Jan 26 11:58:45 2011 +0000 +++ b/tools/libxl/libxl.c Wed Jan 26 14:26:57 2011 -0500 @@ -836,22 +836,40 @@ static int validate_virtual_disk(libxl_c static int validate_virtual_disk(libxl_ctx *ctx, char *file_name, libxl_disk_phystype disk_type) { struct stat stat_buf; + const char *fname; if ( (file_name[0] == '\0') && (disk_type == PHYSTYPE_EMPTY) ) return 0; - if ( stat(file_name, &stat_buf) != 0 ) { - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "failed to stat %s", file_name); + if ( disk_type == PHYSTYPE_AIO ) { + fname = strchr(file_name, ':'); + if ( fname == NULL ) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "missing file format prefix!" + " tap:aio disk option must be followed by file format type"); + return ERROR_INVAL; + } + fname++; + if ( strncmp(file_name, "vhd:", sizeof("vhd:")-1) != 0 ) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Only vhd file format supported" + " with tapdisk"); + return ERROR_INVAL; + } + } + else + fname = file_name; + + if ( stat(fname, &stat_buf) != 0 ) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "failed to stat %s", fname); return ERROR_INVAL; } if ( disk_type == PHYSTYPE_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); + fname); return ERROR_INVAL; } } else if ( S_ISREG(stat_buf.st_mode) && stat_buf.st_size == 0 ) { - LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Virtual disk %s size is 0!\n", file_name); + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Virtual disk %s size is 0!\n", fname); return ERROR_INVAL; } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |