[libvirt] [PATCH] lxc: Do not try to reconnect inactive domain when do lxcStartup

Daniel P. Berrange berrange at redhat.com
Tue May 3 13:09:57 UTC 2011


On Fri, Apr 29, 2011 at 03:21:03PM +0800, Osier Yang wrote:
> Otherwise if there are inactive lxc domains, lxcStartup will
> try to reconnect to sockets of these domains, which results in
> errors in libvirtd log.
> ---
>  src/lxc/lxc_driver.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index e905302..ef7827b 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -1992,6 +1992,9 @@ lxcReconnectVM(void *payload, const void *name ATTRIBUTE_UNUSED, void *opaque)
> 
>      virDomainObjLock(vm);
> 
> +    if (!virDomainObjIsActive(vm))
> +        goto cleanup;
> +
>      priv = vm->privateData;
>      if ((priv->monitor = lxcMonitorClient(driver, vm)) < 0) {
>          goto cleanup;

I don't see how this can be correct.

The startup code does:

    if (virDomainLoadAllConfigs(lxc_driver->caps,
                                &lxc_driver->domains,
                                lxc_driver->configDir,
                                lxc_driver->autostartDir,
                                0, NULL, NULL) < 0)
        goto cleanup;

    virHashForEach(lxc_driver->domains.objs, lxcReconnectVM, lxc_driver);


So, at the point 'lxcReconnectVM' is called  'virDomainIsActive'
will return false for *every* single VM, even ones that *are*
active.

You can't use 'virDomainIsActive' in this way, until we've loaded
the live state XML, which is later on in the lxcReconnectVM method.

So, AFAICT, this patch means we will never reconnect to any LXC
VMs now.

The correct solution, is to refactor LXC driver startup to work
the same way as the QEMU driver startup.

  - Load all the live state XML files (to pick up running VMs)
  - Reconnect to all VMs
  - Load all the persistent config XML files (to pick up any additional
    inactive guets)

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



More information about the libvir-list mailing list