On Fri, Mar 21, 2008 at 05:05:43PM +0000, Daniel P. Berrange wrote:
Yes, this is a fundamentally stateful driver, so should run in the
context
of the daemon as the QEMU driver does. Loading & unloading the persistent
state in the open/close method is hacking around the capabilities we already
provide for stateful drivers, and it is not safe to have multiple libvirt
clients reading/writing the same config files without any form of locking.
By using the libvirt daemon stateful driver support we avoid the locking
issues, avoid the synchronization problems between multiple clients, and
avoid having to have the fork()d container re-write the config files to
include the PID and so on.
The following patches make the driver properly integrate with the stateful
driver APIs. It also changes the config files to be named by on VM name
instead of UUID, since this is what the QEMU driver does & its more user
friendly. It also adds the CLONE_XXX constants since they have not yet
been added to the libc sched.h file. IMHO we should enable the driver by
default, since it can already probe for availability at runtime. Finally
it also fixes a typo where it wrote 'linuxcontainer' as the domain type
in the config file instead of 'lxc'.
I applied the patch in CVs since it was agreed upon and needed for further
developments.
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/