diff options
author | Marek Marczykowski <marmarek@mimuw.edu.pl> | 2011-06-05 16:48:17 +0200 |
---|---|---|
committer | Marek Marczykowski <marmarek@mimuw.edu.pl> | 2011-06-05 16:48:17 +0200 |
commit | d257be9885de2e8af9cb0b726b3c6adeae212d7f (patch) | |
tree | 985560a96a6b15129d08cb5c0c4b26d83ec5950c | |
parent | 8157f145d68cdf8743e99976f65b42e7df1027fe (diff) | |
download | xen-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.c | 2 | ||||
-rw-r--r-- | tools/libxl/libxl_internal.h | 2 | ||||
-rw-r--r-- | tools/libxl/libxl_utils.c | 8 |
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; } |