]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
libxl: Accept disk name in libxl_devid_to_device_disk
authorMarek Marczykowski <marmarek@mimuw.edu.pl>
Sun, 5 Jun 2011 14:48:17 +0000 (16:48 +0200)
committerMarek Marczykowski <marmarek@mimuw.edu.pl>
Sun, 5 Jun 2011 14:48:17 +0000 (16:48 +0200)
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>
tools/libxl/libxl_device.c
tools/libxl/libxl_internal.h
tools/libxl/libxl_utils.c

index c115014a99a040858c120ecec63432c646583e6b..ccc45348ae0b0f51afceaacf4be7de06d174dd46 100644 (file)
@@ -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;
index 277b04cc1f3f72bb58823efbe09643000ab7f9bc..33f4adbab2b0d25981e1b51fc46f3cace6f2af1f 100644 (file)
@@ -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);
index d13ae65821e93cba02cd7fdbc23ba805bd43bc08..183e742e217002bde2776aaddbaec9bff477b8e6 100644 (file)
@@ -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;
     }