[libvirt] [PATCH 10/21] Don't let parent of daemon exit until basic initialization is done
Daniel P. Berrange
berrange at redhat.com
Mon Nov 2 23:16:02 UTC 2009
On Mon, Nov 02, 2009 at 05:05:55PM -0500, Cole Robinson wrote:
> On 10/23/2009 09:05 AM, Daniel P. Berrange wrote:
> > The daemonizing code lets the parent exit almost immediately. This
> > means that it may think it has successfully started even when
> > important failures occur like not being able to acquire the PID
> > file. It also means network sockets are not yet open.
> >
> > To address this when daemonizing the parent passes an open pipe
> > file descriptor to the child. The child does its basic initialization
> > and then writes a status code to the pipe indicating either success,
> > or failure. This ensures that when daemonizing, the parent does not
> > exit until the pidfile is acquired & basic network sockets are open.
> >
> > Initialization of the libvirt drivers is still done asynchronously
> > since this may take a very long time.
> >
> > * daemon/libvirtd.c: Force parent to stay around until basic config
> > file, pidfile & network socket init is completed
> > + /* Start the stateful HV drivers
> > + * This is delibrately done after telling the parent process
> > + * we're ready, since it can take a long time and this will
> > + * seriously delay OS bootup process */
> > + if (virStateInitialize(server->privileged) < 0) {
> > + VIR_ERROR0("Driver state initialization failed");
> > + goto error;
> > + }
> >
>
> This breaks qemu:///session for me.
>
> Starting libvirtd by hand as a regular user, virStateInitialize tries to
> init lxc, but lxc explicitly denies non-root driver startup in
> lxc_driver.c:lxcStartup:
>
> /* Check that the user is root */
> if (!privileged) {
> return -1;
> }
>
> Not sure what the proper fix is.
Sorry, this was a rebase messup. The fix for this is in the next patch
in the series - lxcStartup() should only return -1 for actual errors.
Running unprivileged is not an error, it should merely disable itself
and return 0. I'll apply the fix now.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.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