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
|