[libvirt] PATCH: Write pidfile earlier in startup

Daniel Veillard veillard at redhat.com
Tue May 20 16:02:03 UTC 2008


On Fri, May 16, 2008 at 05:39:46PM +0100, Daniel P. Berrange wrote:
> On Fri, May 16, 2008 at 05:05:08PM +0100, Daniel P. Berrange wrote:
> > When used with the --daemon arg, libvirtd will write out a pid file to
> > /var/run/libvirtd.pid and exit if this file already exists. Unfortuantely
> > it does this quite late in its startup procedure - in particular *after*
> > the call to qemudInitialize(), which in turns initializes the drivers,
> > which in turn autostarts all the VMs and networks.
> > 
> > So if you start a 2nd libvirtd instance it would do autostart before it
> > got to checking for existing PID file. This is clearly very bad because
> > the same VM would be started twice resulting in data corruption. Fortunately
> > the Red Hat / Fedora initscript also checks the PID file before even starting
> > the daemon, but this can affect people starting the daemon directly.
> > 
> > So this patch makes the goDaemon() / pidfile creation the very first thing
> > the daemon does after parsing command line arguments. This also results in
> > greatly increased startup time for OS, since the initscript doesn't have
> > to wait for it to auto-start all the VMs & networks before it daemonizes.
> > It also initializes the signal handlers before calling qemudInitialize()
> > since these really need to be setup before we start any VMs / child procs.
> 
> There were actually some more changes needed. It needs to write the PID file
> even if not running with --daemon mode to be truely safe, because some
> init software won't run it in daemon mode at all. So this updated patch will
> always write a PID file if run as root.  It also fixes a few flaws in the
> cleanup process to ensure it only unlinks the pidfile on failure if it owned
> the pidfile, and removes a pointless warning when running non-root.

  Yes this is a serious problem, patch looks fine, +1

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list