From: Anthony PERARD <anthony.perard@citrix.com>
To: <xen-devel@lists.xenproject.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>,
Jason Andryuk <jandryuk@gmail.com>,
Ian Jackson <iwj@xenproject.org>, Wei Liu <wl@xen.org>
Subject: [XEN PATCH v2 4/8] libxl: Use -device for cd-rom drives
Date: Tue, 11 May 2021 10:28:06 +0100 [thread overview]
Message-ID: <20210511092810.13759-5-anthony.perard@citrix.com> (raw)
In-Reply-To: <20210511092810.13759-1-anthony.perard@citrix.com>
This allows to set an `id` on the device instead of only the drive. We
are going to need the `id` with the "eject" and
"blockdev-change-media" QMP command as using `device` parameter on
those is deprecated. (`device` is the `id` of the `-drive` on the
command line).
We set the same `id` on both -device and -drive as QEMU doesn't
complain and we can then either do "eject id=$id" or "eject
device=$id".
Using "-drive + -device" instead of only "-drive" has been
available since at least QEMU 0.15, and seems to be the preferred way as it
separates the host part (-drive which describe the disk image location
and format) from the guest part (-device which describe the emulated
device). More information in qemu.git/docs/qdev-device-use.txt .
Changing the command line during migration for the cdrom seems fine.
Also the documentation about migration in QEMU explains that the device
state ID is "been formed from a bus name and device address", so
second IDE bus and first device address on bus is still thus and
doesn't matter if written "-drive if=ide,index=2" or "-drive
ide-cd,bus=ide.1,unit=0".
See qemu.git/docs/devel/migration.rst .
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
tools/libs/light/libxl_dm.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 0a0c1ef7c62e..5b01cf284163 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1913,6 +1913,7 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
}
if (disks[i].is_cdrom) {
+ const char *drive_id;
if (disk > 4) {
LOGD(WARN, guest_domid, "Emulated CDROM can be only one of the first 4 disks.\n"
"Disk %s will be available via PV drivers but not as an "
@@ -1920,13 +1921,22 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
disks[i].vdev);
continue;
}
- drive = libxl__sprintf(gc,
- "if=ide,index=%d,readonly=on,media=cdrom,id=ide-%i",
- disk, dev_number);
+
+ drive_id = GCSPRINTF("ide-%i", dev_number);
+ drive = GCSPRINTF("if=none,readonly=on,id=%s", drive_id);
if (target_path)
drive = libxl__sprintf(gc, "%s,file=%s,format=%s",
drive, target_path, format);
+
+ flexarray_vappend(dm_args,
+ "-drive", drive,
+ "-device",
+ GCSPRINTF("ide-cd,id=%s,drive=%s,bus=ide.%u,unit=%u",
+ drive_id, drive_id,
+ disk / 2, disk % 2),
+ NULL);
+ continue;
} else {
/*
* Explicit sd disks are passed through as is.
--
Anthony PERARD
next prev parent reply other threads:[~2021-05-11 9:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-11 9:28 [XEN PATCH v2 0/8] Fix libxl with QEMU 6.0 + remove some more deprecated usages Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 1/8] libxl: Replace deprecated QMP command by "query-cpus-fast" Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 2/8] libxl: Replace QEMU's command line short-form boolean option Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 3/8] libxl: Replace deprecated "cpu-add" QMP command by "device_add" Anthony PERARD
2021-05-11 9:28 ` Anthony PERARD [this message]
2021-05-11 9:28 ` [XEN PATCH v2 5/8] libxl: Assert qmp_ev's state in qmp_ev_qemu_compare_version Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 6/8] libxl: Export libxl__qmp_ev_qemu_compare_version Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 7/8] libxl: Use `id` with the "eject" QMP command Anthony PERARD
2021-05-11 9:28 ` [XEN PATCH v2 8/8] libxl: Replace QMP command "change" by "blockdev-change-media" Anthony PERARD
2021-06-15 13:02 ` [XEN PATCH v2 0/8] Fix libxl with QEMU 6.0 + remove some more deprecated usages Julien Grall
2021-06-29 7:59 ` Olaf Hering
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210511092810.13759-5-anthony.perard@citrix.com \
--to=anthony.perard@citrix.com \
--cc=iwj@xenproject.org \
--cc=jandryuk@gmail.com \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).