* [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen
@ 2012-10-08 18:55 Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom Anthony PERARD
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Anthony PERARD @ 2012-10-08 18:55 UTC (permalink / raw)
To: Xen Devel; +Cc: Anthony PERARD, Ian Jackson, Ian Campbell
This patch series provides the facility to eject and insert a cdrom when the
used device-model is qemu-xen. The only difference between both device-model is
a call to a QMP command as `xl cd-insert ...` will still update xenstore, even
if it's not used by QEMU.
Change since v1:
- Update first patch to use new facilities introduce by my previous applied series.
- Use the disk dev number instead of the vdev string as on id for the cdrom.
Anthony PERARD (3):
libxl_qmp, Introduce libxl__qmp_insert_cdrom.
libxl_dm: Set an id to cdrom drives with qemuu.
libxl: Fix cd-insert with qemu-xen.
tools/libxl/libxl.c | 12 ++++++------
tools/libxl/libxl_dm.c | 7 ++++---
tools/libxl/libxl_internal.h | 1 +
tools/libxl/libxl_qmp.c | 16 ++++++++++++++++
4 files changed, 27 insertions(+), 9 deletions(-)
--
Anthony PERARD
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V2 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom.
2012-10-08 18:55 [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen Anthony PERARD
@ 2012-10-08 18:55 ` Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 2/3] libxl_dm: Set an id to cdrom drives with qemuu Anthony PERARD
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Anthony PERARD @ 2012-10-08 18:55 UTC (permalink / raw)
To: Xen Devel; +Cc: Anthony PERARD, Ian Jackson, Ian Campbell
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@citrix.com>
---
tools/libxl/libxl_internal.h | 1 +
tools/libxl/libxl_qmp.c | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index afa36a7..4240ef2 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -1406,6 +1406,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 5fa0c65..7f1dd98 100644
--- a/tools/libxl/libxl_qmp.c
+++ b/tools/libxl/libxl_qmp.c
@@ -913,6 +913,22 @@ int libxl__qmp_set_global_dirty_log(libxl__gc *gc, int domid, bool enable)
NULL, NULL);
}
+int libxl__qmp_insert_cdrom(libxl__gc *gc, int domid,
+ const libxl_device_disk *disk)
+{
+ libxl__json_object *args = NULL;
+ int dev_number = libxl__device_disk_dev_number(disk->vdev, NULL, NULL);
+
+ QMP_PARAMETERS_SPRINTF(&args, "device", "ide-%i", dev_number);
+
+ if (disk->format == LIBXL_DISK_FORMAT_EMPTY) {
+ return qmp_run_command(gc, domid, "eject", args, NULL, NULL);
+ } else {
+ qmp_parameters_add_string(gc, &args, "target", disk->pdev_path);
+ return qmp_run_command(gc, domid, "change", args, NULL, NULL);
+ }
+}
+
int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid,
const libxl_domain_config *guest_config)
{
--
Anthony PERARD
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH V2 2/3] libxl_dm: Set an id to cdrom drives with qemuu.
2012-10-08 18:55 [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom Anthony PERARD
@ 2012-10-08 18:55 ` Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 3/3] libxl: Fix cd-insert with qemu-xen Anthony PERARD
2012-10-09 10:34 ` [PATCH V2 0/3] libxl cd-insert/eject " Ian Campbell
3 siblings, 0 replies; 5+ messages in thread
From: Anthony PERARD @ 2012-10-08 18:55 UTC (permalink / raw)
To: Xen Devel; +Cc: Anthony PERARD, Ian Jackson, Ian Campbell
In order to eject and change a cdrom when using qemu-xen, this patch adds an id
the cdrom driver when starting the device model.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
tools/libxl/libxl_dm.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 054da3e..c036dc1 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -544,11 +544,12 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
if (disks[i].is_cdrom) {
if (disks[i].format == LIBXL_DISK_FORMAT_EMPTY)
drive = libxl__sprintf
- (gc, "if=ide,index=%d,media=cdrom,cache=writeback", disk);
+ (gc, "if=ide,index=%d,media=cdrom,cache=writeback,id=ide-%i",
+ disk, dev_number);
else
drive = libxl__sprintf
- (gc, "file=%s,if=ide,index=%d,media=cdrom,format=%s,cache=writeback",
- disks[i].pdev_path, disk, format);
+ (gc, "file=%s,if=ide,index=%d,media=cdrom,format=%s,cache=writeback,id=ide-%i",
+ disks[i].pdev_path, disk, format, dev_number);
} else {
if (disks[i].format == LIBXL_DISK_FORMAT_EMPTY) {
LIBXL__LOG(ctx, LIBXL__LOG_WARNING, "cannot support"
--
Anthony PERARD
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH V2 3/3] libxl: Fix cd-insert with qemu-xen.
2012-10-08 18:55 [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 2/3] libxl_dm: Set an id to cdrom drives with qemuu Anthony PERARD
@ 2012-10-08 18:55 ` Anthony PERARD
2012-10-09 10:34 ` [PATCH V2 0/3] libxl cd-insert/eject " Ian Campbell
3 siblings, 0 replies; 5+ messages in thread
From: Anthony PERARD @ 2012-10-08 18:55 UTC (permalink / raw)
To: Xen Devel; +Cc: Anthony PERARD, Ian Jackson, Ian Campbell
If qemu-xen is used as a device model, the command to insert, change or eject a
cdrom will go through QMP. XenStore is still updated even if QEMU will not read
from it.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
tools/libxl/libxl.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 0cf4768..3366ccf 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -2141,12 +2141,6 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
rc = ERROR_FAIL;
goto out;
}
- if (dm_ver != LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL) {
- LOG(ERROR, "cdrom-insert does not work with %s",
- libxl_device_model_version_to_string(dm_ver));
- rc = ERROR_INVAL;
- goto out;
- }
disks = libxl_device_disk_list(ctx, domid, &num);
for (i = 0; i < num; i++) {
@@ -2170,6 +2164,12 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
rc = libxl__device_from_disk(gc, domid, disk, &device);
if (rc) goto out;
+
+ if (dm_ver == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN) {
+ rc = libxl__qmp_insert_cdrom(gc, domid, disk);
+ if (rc) goto out;
+ }
+
path = libxl__device_backend_path(gc, &device);
insert = flexarray_make(gc, 4, 1);
--
Anthony PERARD
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen
2012-10-08 18:55 [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen Anthony PERARD
` (2 preceding siblings ...)
2012-10-08 18:55 ` [PATCH V2 3/3] libxl: Fix cd-insert with qemu-xen Anthony PERARD
@ 2012-10-09 10:34 ` Ian Campbell
3 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2012-10-09 10:34 UTC (permalink / raw)
To: Anthony PERARD; +Cc: Ian Jackson, Xen Devel
On Mon, 2012-10-08 at 19:55 +0100, Anthony PERARD wrote:
> This patch series provides the facility to eject and insert a cdrom when the
> used device-model is qemu-xen. The only difference between both device-model is
> a call to a QMP command as `xl cd-insert ...` will still update xenstore, even
> if it's not used by QEMU.
All:
Acked-by: Ian Campbell <ian.campbell@citrix.com>
And applied.
>
>
> Change since v1:
> - Update first patch to use new facilities introduce by my previous applied series.
> - Use the disk dev number instead of the vdev string as on id for the cdrom.
>
>
> Anthony PERARD (3):
> libxl_qmp, Introduce libxl__qmp_insert_cdrom.
> libxl_dm: Set an id to cdrom drives with qemuu.
> libxl: Fix cd-insert with qemu-xen.
>
> tools/libxl/libxl.c | 12 ++++++------
> tools/libxl/libxl_dm.c | 7 ++++---
> tools/libxl/libxl_internal.h | 1 +
> tools/libxl/libxl_qmp.c | 16 ++++++++++++++++
> 4 files changed, 27 insertions(+), 9 deletions(-)
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-10-09 10:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-08 18:55 [PATCH V2 0/3] libxl cd-insert/eject with qemu-xen Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 1/3] libxl_qmp, Introduce libxl__qmp_insert_cdrom Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 2/3] libxl_dm: Set an id to cdrom drives with qemuu Anthony PERARD
2012-10-08 18:55 ` [PATCH V2 3/3] libxl: Fix cd-insert with qemu-xen Anthony PERARD
2012-10-09 10:34 ` [PATCH V2 0/3] libxl cd-insert/eject " Ian Campbell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).