[libvirt] [PATCH 3/6] Implement virDomainUpdateDeviceFlags API in all drivers with media change

Daniel Veillard veillard at redhat.com
Thu Mar 25 10:47:33 UTC 2010


On Wed, Mar 24, 2010 at 11:46:24AM +0000, Daniel P. Berrange wrote:
> To allow the new virDomainUpdateDeviceFlags() API to be universally
> used with all drivers, this patch adds an impl to all the current
> drivers which support CDROM or Floppy disk media change via the
> current virDomainAttachDeviceFlags API
> 
> * src/qemu/qemu_driver.c, src/vbox/vbox_tmpl.c,
>   src/xen/proxy_internal.c, src/xen/xen_driver.c,
>   src/xen/xend_internal.c: Implement media change via the
>   virDomainUpdateDeviceFlags API
> * src/xen/xen_driver.h, src/xen/xen_hypervisor.c,
>   src/xen/xen_inotify.c, src/xen/xm_internal.c,
>   src/xen/xs_internal.c: Stubs for Xen driver entry points
[...]
> +static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
> +                                       const char *xml,
> +                                       unsigned int flags)
> +{
[...]
> +        switch (dev->data.disk->device) {
> +        case VIR_DOMAIN_DISK_DEVICE_CDROM:
> +        case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
> +            ret = qemudDomainChangeEjectableMedia(driver, vm, dev->data.disk);
> +            if (ret == 0)
> +                dev->data.disk = NULL;
> +            break;
> +
> +
> +        default:
> +            qemuReportError(VIR_ERR_NO_SUPPORT,
> +                            _("disk bus '%s' cannot be updated."),
> +                            virDomainDiskBusTypeToString(dev->data.disk->bus));
> +            break;
> +        }
> +
> +        if (ret != 0 && cgroup) {
> +            virCgroupDenyDevicePath(cgroup,
> +                                    dev->data.disk->src);
> +        }

  Hum ... I got a bit lost there, qemudDomainChangeEjectableMedia only
returns -1 on error or 0 on success. But failure to change may mean that
the previous data is still being used, shouldn't we check that the
old and new data.disk->src are different before denying access ?

  But it's a minor question,

  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