Refine the patch according to Stefano's advice.
1. Writing to Xenstore in libxl_device_disk_add is left as-it-is.
2. Reserved encoding for virtio disk.
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index ccf6518..6943b9d 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1028,6 +1028,9 @@ int libxl_device_disk_add(libxl_ctx *ctx,
uint32_t domid, libxl_device_disk *dis
libxl__device_disk_string_of_format(disk->format), disk->pdev_path));
device.backend_kind = DEVICE_QDISK;
break;
+ case LIBXL_DISK_BACKEND_NONE:
+ /* Nothing to do, not a Xen VBD */
+ break;
default:
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "unrecognized disk
backend type: %d\n", disk->backend);
rc = ERROR_INVAL;
diff --git a/tools/libxl/libxl.idl b/tools/libxl/libxl.idl
index a5be66f..6b27eae 100644
--- a/tools/libxl/libxl.idl
+++ b/tools/libxl/libxl.idl
@@ -54,6 +54,7 @@ libxl_disk_backend = Enumeration("disk_backend", [
(1, "PHY"),
(2, "TAP"),
(3, "QDISK"),
+ (4, "NONE"),
])
libxl_nic_type = Enumeration("nic_type", [
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index 5d85822..d8de1b7 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -239,6 +239,13 @@ int libxl__device_disk_dev_number(char *virtpath,
int *pdisk, int *ppartition)
if (ppartition) *ppartition = partition;
return (8 << 8) | (disk << 4) | partition;
}
+ if (device_virtdisk_matches(virtpath, "vd",
+ &disk, 15,
+ &partition, 15)) {
+ if (pdisk) *pdisk = disk;
+ if (ppartition) *ppartition = partition;
+ return (2 << 28) | (disk << 8) | partition;
+ }
return -1;
}
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 76479fe..3403b5e 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -423,6 +423,10 @@ static char **
libxl__build_device_model_args_new(libxl__gc *gc,
drive = libxl__sprintf
(gc, "file=%s,if=ide,index=%d,media=disk,format=%s",
disks[i].pdev_path, disk, format);
+ else if (strncmp(disks[i].vdev, "vd", 2) == 0)
+ drive = libxl__sprintf
+ (gc, "file=%s,if=virtio,index=%d,media=disk,format=%s",
+ disks[i].pdev_path, disk, format);
else
continue; /* Do not emulate this disk */
}
@@ -976,6 +980,7 @@ int libxl__need_xenpv_qemu(libxl__gc *gc,
case LIBXL_DISK_BACKEND_PHY:
case LIBXL_DISK_BACKEND_UNKNOWN:
+ case LIBXL_DISK_BACKEND_NONE:
break;
}
}
--
Best regards
Wei Liu
Twitter: @iliuw
Site: http://liuw.name
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|