[libvirt] [Qemu-devel] Re: Libvirt debug API

Daniel P. Berrange berrange at redhat.com
Fri Apr 23 14:34:15 UTC 2010


On Fri, Apr 23, 2010 at 08:48:51AM -0500, Anthony Liguori wrote:
> On 04/23/2010 07:48 AM, Avi Kivity wrote:
> >On 04/22/2010 09:49 PM, Anthony Liguori wrote:
> >>>real API. Say, adding a device libvirt doesn't know about or 
> >>>stopping the VM
> >>>while libvirt thinks it's still running or anything like that.
> >>  Another problem is issuing Monitor commands that could confuse 
> >>libvirt's
> >>
> >>We need to make libvirt and qemu smarter.
> >>
> >>We already face this problem today with multiple libvirt users.  This 
> >>is why sophisticated management mechanisms (like LDAP) have 
> >>mechanisms to do transactions or at least a series of atomic operations.
> >
> >And people said qmp/json was overengineered...
> >
> >But seriously, transactions won't help anything.  qemu maintains 
> >state, and when you have two updaters touching a shared variable not 
> >excepting each other to, things break, no matter how much locking 
> >there is.
> 
> Let's consider some concrete examples.  I'm using libvirt and QMP and in 
> QMP, I want to hot unplug a device.
> 
> Today, I do this by listing the pci devices, and issuing a pci_del that 
> takes a PCI address.  This is intrinsically racy though because in the 
> worst case scenario, in between when I enumerate pci devices and do the 
> pci_del in QMP, in libvirt, I've done a pci_del and then a pci_add 
> within libvirt of a completely different device.

This is what already happens with any QEMU >= 0.12, where libvirt uses
the new -device syntax  with its 'id' parameter for all devices, and 
then uses 'device_id $ID' for unplug. The app still has to be careful
it doesn't try to add a device using the same naming scheme as a
device libvirt uses. This is easy enough though if they prepend some
random string to all device IDs thy use, that won't clash with libvirt
device ID names.

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list