[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 2/7] libxl: introduce an OS-specific function to get the physical-device
Linux and NetBSD will return the device major and minor numbers encoded in hex and separated by a ":". FreeBSD on the other hand returns the path to the block device or image file. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl.c | 9 +++++---- tools/libxl/libxl_freebsd.c | 6 ++++++ tools/libxl/libxl_internal.h | 6 ++++++ tools/libxl/libxl_linux.c | 10 ++++++++++ tools/libxl/libxl_netbsd.c | 10 ++++++++++ 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 2d18b8d..6d719d7 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2515,10 +2515,11 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid, */ if (!disk->script && disk->backend_domid == LIBXL_TOOLSTACK_DOMID) { - int major, minor; - if (!libxl__device_physdisk_major_minor(dev, &major, &minor)) - flexarray_append_pair(back, "physical-device", - GCSPRINTF("%x:%x", major, minor)); + char *physdev; + + physdev = libxl__get_physical_device(dev); + if (physdev != NULL) + flexarray_append_pair(back, "physical-device", physdev); } assert(device->backend_kind == LIBXL__DEVICE_KIND_VBD); diff --git a/tools/libxl/libxl_freebsd.c b/tools/libxl/libxl_freebsd.c index 47c3391..483f36e 100644 --- a/tools/libxl/libxl_freebsd.c +++ b/tools/libxl/libxl_freebsd.c @@ -143,3 +143,9 @@ int libxl__pci_topology_init(libxl__gc *gc, { return ERROR_NI; } + +char *libxl__get_physical_device(char *dev) +{ + + return dev; +} diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 650a958..1a3fa35 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1346,6 +1346,12 @@ void libxl__domaindeathcheck_stop(libxl__gc *gc, libxl__domaindeathcheck *dc); */ _hidden int libxl__try_phy_backend(mode_t st_mode); +/* + * Fetch the "physical-device" backend xenstore field for a local disk + * device. The implementation of this function is OS-specific. + */ +_hidden char *libxl__get_physical_device(char *dev); + _hidden char *libxl__devid_to_localdev(libxl__gc *gc, int devid); diff --git a/tools/libxl/libxl_linux.c b/tools/libxl/libxl_linux.c index be4afc6..7e6d7b9 100644 --- a/tools/libxl/libxl_linux.c +++ b/tools/libxl/libxl_linux.c @@ -347,3 +347,13 @@ int libxl__pci_topology_init(libxl__gc *gc, return err; } + +char *libxl__get_physical_device(char *dev) +{ + int major, minor; + + if (libxl__device_physdisk_major_minor(dev, &major, &minor)) + return NULL; + + return GCSPRINTF("%x:%x", major, minor); +} diff --git a/tools/libxl/libxl_netbsd.c b/tools/libxl/libxl_netbsd.c index 096c057..e12561f 100644 --- a/tools/libxl/libxl_netbsd.c +++ b/tools/libxl/libxl_netbsd.c @@ -100,3 +100,13 @@ int libxl__pci_topology_init(libxl__gc *gc, { return ERROR_NI; } + +char *libxl__get_physical_device(char *dev) +{ + int major, minor; + + if (libxl__device_physdisk_major_minor(dev, &major, &minor)) + return NULL; + + return GCSPRINTF("%x:%x", major, minor); +} -- 2.5.4 (Apple Git-61) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |