diff options
-rw-r--r-- | tools/libxl/libxl.c | 8 | ||||
-rw-r--r-- | tools/libxl/libxl_utils.h | 2 | ||||
-rw-r--r-- | tools/libxl/xl_cmdimpl.c | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index c0600868fd..53443665d4 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1476,13 +1476,17 @@ static void libxl__device_disk_from_xs_be(libxl__gc *gc, disk->format = LIBXL_DISK_FORMAT_UNKNOWN; } -int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid, - int devid, libxl_device_disk *disk) +int libxl_vdev_to_device_disk(libxl_ctx *ctx, uint32_t domid, + const char *vdev, libxl_device_disk *disk) { GC_INIT(ctx); char *dompath, *path; + int devid = libxl__device_disk_dev_number(vdev, NULL, NULL); int rc = ERROR_FAIL; + if (devid < 0) + return ERROR_INVAL; + libxl_device_disk_init(disk); dompath = libxl__xs_get_dompath(gc, domid); diff --git a/tools/libxl/libxl_utils.h b/tools/libxl/libxl_utils.h index a4f5bf2d81..ca53a8a233 100644 --- a/tools/libxl/libxl_utils.h +++ b/tools/libxl/libxl_utils.h @@ -61,7 +61,7 @@ int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid, int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid, int devid, libxl_device_nic *nic); -int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid, int devid, +int libxl_vdev_to_device_disk(libxl_ctx *ctx, uint32_t domid, const char *vdev, libxl_device_disk *disk); int libxl_cpumap_alloc(libxl_ctx *ctx, libxl_cpumap *cpumap); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 47527440ca..553606b8eb 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -4804,7 +4804,7 @@ int main_blockdetach(int argc, char **argv) fprintf(stderr, "%s is an invalid domain identifier\n", argv[optind]); return 1; } - if (libxl_devid_to_device_disk(ctx, domid, atoi(argv[optind+1]), &disk)) { + if (libxl_vdev_to_device_disk(ctx, domid, argv[optind+1], &disk)) { fprintf(stderr, "Error: Device %s not connected.\n", argv[optind+1]); return 1; } |