[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom.
This function can eject or change the CDROM for a guest that use qemu-xen as a device-model. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- tools/libxl/libxl_internal.h | 1 + tools/libxl/libxl_qmp.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 0 deletions(-) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index c369fd3..eb8786c 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1389,6 +1389,7 @@ _hidden int libxl__qmp_resume(libxl__gc *gc, int domid); _hidden int libxl__qmp_save(libxl__gc *gc, int domid, const char *filename); /* Set dirty bitmap logging status */ _hidden int libxl__qmp_set_global_dirty_log(libxl__gc *gc, int domid, bool enable); +_hidden int libxl__qmp_insert_cdrom(libxl__gc *gc, int domid, const libxl_device_disk *disk); /* close and free the QMP handler */ _hidden void libxl__qmp_close(libxl__qmp_handler *qmp); /* remove the socket file, if the file has already been removed, diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index 2c5559f..aebc733 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -1024,6 +1024,41 @@ out: return rc; } +int libxl__qmp_insert_cdrom(libxl__gc *gc, int domid, + const libxl_device_disk *disk) +{ + libxl__qmp_handler *qmp = NULL; + char *device_id; + int rc = 0; + + device_id = libxl__sprintf(gc, "ide-%s", disk->vdev); + if (!device_id) + return ERROR_NOMEM; + + qmp = libxl__qmp_initialize(gc, domid); + if (!qmp) + return ERROR_FAIL; + + if (disk->format == LIBXL_DISK_FORMAT_EMPTY) { + libxl__json_object *args = NULL; + + args = qmp_parameters_add_string(gc, NULL, "device", device_id); + if (!args) { + rc = ERROR_NOMEM; + goto out; + } + rc = qmp_synchronous_send(qmp, "eject", args, NULL, NULL, qmp->timeout); + libxl__json_object_free(gc, args); + } else { + char *file = disk->pdev_path; + rc = qmp_change(gc, qmp, device_id, file, NULL); + } + +out: + libxl__qmp_close(qmp); + return rc; +} + int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid, const libxl_domain_config *guest_config) { -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |