[libvirt] [PATCH 05/11] qemu: Prohibit setting tray status as open for block type disk
Daniel Veillard
veillard at redhat.com
Fri Mar 23 09:25:24 UTC 2012
On Wed, Mar 14, 2012 at 11:26:49PM +0800, Osier Yang wrote:
> --
> Created this as a seperate patch, as I'm not quite sure if it's
> good to do this in libvirt, it's more like a protection for
> qemu problem, i.e. closing the physical drive tray won't close
> the guest tray. Paolo persist in doing this in libvirt, but IMHO
> QEMU is the better place to prevent that. Anyway, let's evaluate.
> ---
> src/qemu/qemu_command.c | 15 +++++++++++++++
> 1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index ba6edce..29cc4bd 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1963,6 +1963,13 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
> break;
> }
> } else {
> + if ((disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK) &&
> + (disk->tray_status == VIR_DOMAIN_DISK_TRAY_OPEN)) {
> + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("tray status 'open' is invalid for "
> + "block type disk"));
> + goto error;
> + }
> virBufferEscape(&opt, ',', ",", "file=%s,", disk->src);
> }
> }
> @@ -4625,6 +4632,14 @@ qemuBuildCommandLine(virConnectPtr conn,
> const char *fmt;
> virDomainDiskDefPtr disk = def->disks[i];
>
> + if ((disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK) &&
> + (disk->tray_status == VIR_DOMAIN_DISK_TRAY_OPEN)) {
> + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("tray status 'open' is invalid for "
> + "block type disk"));
> + goto error;
> + }
> +
> if (disk->bus == VIR_DOMAIN_DISK_BUS_USB) {
> if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
> virCommandAddArg(cmd, "-usbdevice");
I think it's fine to do this in libvirt, after all we decided that
hard drives could have no tray, that's a libvirt decision from an API
POV, so I think it fine to implement the check here IMHO,
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list