aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Marczykowski <marmarek@mimuw.edu.pl>2011-06-05 16:48:17 +0200
committerMarek Marczykowski <marmarek@mimuw.edu.pl>2011-06-05 16:48:17 +0200
commitd257be9885de2e8af9cb0b726b3c6adeae212d7f (patch)
tree985560a96a6b15129d08cb5c0c4b26d83ec5950c
parent8157f145d68cdf8743e99976f65b42e7df1027fe (diff)
downloadxen-d257be9885de2e8af9cb0b726b3c6adeae212d7f.tar.gz
xen-d257be9885de2e8af9cb0b726b3c6adeae212d7f.tar.bz2
xen-d257be9885de2e8af9cb0b726b3c6adeae212d7f.zip
libxl: Accept disk name in libxl_devid_to_device_disk
Accept disk name in xl block-detach. Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl> xen-unstable changest: 23604:5d7998be2252 Backport-requested-by: Marek Marczykowski <marmarek@mimuw.edu.pl> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--tools/libxl/libxl_device.c2
-rw-r--r--tools/libxl/libxl_internal.h2
-rw-r--r--tools/libxl/libxl_utils.c8
3 files changed, 6 insertions, 6 deletions
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index c115014a99..ccc45348ae 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -201,7 +201,7 @@ static int device_virtdisk_matches(const char *virtpath, const char *devtype,
return 1;
}
-int libxl__device_disk_dev_number(char *virtpath)
+int libxl__device_disk_dev_number(const char *virtpath)
{
int disk, partition;
char *ep;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 277b04cc1f..33f4adbab2 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -182,7 +182,7 @@ _hidden char *libxl__device_disk_string_of_backend(libxl_disk_backend backend);
_hidden char *libxl__device_disk_string_of_format(libxl_disk_format format);
_hidden int libxl__device_physdisk_major_minor(const char *physpath, int *major, int *minor);
-_hidden int libxl__device_disk_dev_number(char *virtpath);
+_hidden int libxl__device_disk_dev_number(const char *virtpath);
_hidden int libxl__device_generic_add(libxl_ctx *ctx, libxl__device *device,
char **bents, char **fents);
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index d13ae65821..183e742e21 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -529,18 +529,18 @@ int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid,
const char *devid, libxl_device_disk *disk)
{
libxl__gc gc = LIBXL_INIT_GC(ctx);
- char *endptr, *val;
+ char *val;
char *dompath, *diskpath, *be_path;
unsigned int devid_n;
int rc = ERROR_INVAL;
- devid_n = strtoul(devid, &endptr, 10);
- if (devid == endptr) {
+ devid_n = libxl__device_disk_dev_number(devid);
+ if (devid_n < 0) {
goto out;
}
rc = ERROR_FAIL;
dompath = libxl__xs_get_dompath(&gc, domid);
- diskpath = libxl__sprintf(&gc, "%s/device/vbd/%s", dompath, devid);
+ diskpath = libxl__sprintf(&gc, "%s/device/vbd/%d", dompath, devid_n);
if (!diskpath) {
goto out;
}