aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_device.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2013-04-26 12:41:43 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-04-26 15:59:41 +0100
commit3ed6d71247b6ef3c701654824f5b4c961eacfd61 (patch)
tree645107badde356651e222918eecd11d2f268dc99 /tools/libxl/libxl_device.c
parentb26d570c93a162c2b8f7a9ea336b1935b01af0b2 (diff)
downloadxen-3ed6d71247b6ef3c701654824f5b4c961eacfd61.tar.gz
xen-3ed6d71247b6ef3c701654824f5b4c961eacfd61.tar.bz2
xen-3ed6d71247b6ef3c701654824f5b4c961eacfd61.zip
libxl: stat the path for all non-qdisk backends (including unknown)
The commit a8a1f236a296 "libxl: Only call stat() when adding a disk if we expect a device to exist." changed things to only stat the file when the phy backend was explicitly requested. This broke the case where we are probing and would normally be able to decide on the phy option. Since the intention of that commit was to allow for backends with no explicit file in dom0 (i.e. network remote backend such as ceph) the lowest impact fix appears to be to make that explicit. It turns out that tap disk can also potentially handle such paths. The only backend which requires a local file/device is PHY but we need to handle UNKNOWN too in order for subsequent probing to work. Note that it is not possible to autoprobe the backend if the path is not a local object, so we don't need to worry about autoprobing ceph etc. This should probably be revisited to rationalize the probing. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
Diffstat (limited to 'tools/libxl/libxl_device.c')
-rw-r--r--tools/libxl/libxl_device.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index eb60fd543b..a826ecef75 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -236,7 +236,8 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) {
return ERROR_INVAL;
}
memset(&a.stab, 0, sizeof(a.stab));
- } else if (disk->backend == LIBXL_DISK_BACKEND_PHY &&
+ } else if ((disk->backend == LIBXL_DISK_BACKEND_UNKNOWN ||
+ disk->backend == LIBXL_DISK_BACKEND_PHY) &&
disk->backend_domid == LIBXL_TOOLSTACK_DOMID &&
!disk->script) {
if (stat(disk->pdev_path, &a.stab)) {