[libvirt] [PATCH] Xen Events Updated

Daniel P. Berrange berrange at redhat.com
Fri Nov 21 18:51:49 UTC 2008


On Fri, Nov 21, 2008 at 01:06:08PM -0500, Ben Guthro wrote:
> I tested these changes, and seem to be having some issues opening the xen driver in a post 3.0.3 codepath:
> 
> DEBUG: xen_unified.c: xenUnifiedOpen (Trying hypervisor sub-driver)
> DEBUG: xen_unified.c: xenUnifiedOpen (Activated hypervisor sub-driver)
> libvir: Xen Daemon error : internal error failed to create a socket   
> libvir: Xen error : out of memory                                     
> DEBUG: xen_unified.c: xenUnifiedOpen (Failed to make capabilities)    
> DEBUG: xen_unified.c: xenUnifiedOpen (Failed to activate a mandatory sub-driver)
> DEBUG: libvirt.c: do_open (driver 1 Xen returned ERROR)
> 
> 
> I haven't chased this down fully yet, but something is interfering...

Wierd, I'm rather puzzelled as to why you'd get the 'Activated hypervisor
sub-driver' message, but not immediately see a 'Trying XenD sub-driver'
message, since there's only one line of code in between them which is a
simple assignment...

        DEBUG0("Trying hypervisor sub-driver");
        if (drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->open(conn, auth, flags) ==
            VIR_DRV_OPEN_SUCCESS) {
            DEBUG0("Activated hypervisor sub-driver");
            priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] = 1;
        }
    }

    /* XenD is required to suceed if root.
     * If it fails as non-root, then the proxy driver may take over
     */
    DEBUG0("Trying XenD sub-driver");
    if (drivers[XEN_UNIFIED_XEND_OFFSET]->open(conn, auth, flags) ==
        VIR_DRV_OPEN_SUCCESS) {
        DEBUG0("Activated XenD sub-driver");
        priv->opened[XEN_UNIFIED_XEND_OFFSET] = 1;


DEBUG: xen_unified.c: xenUnifiedOpen (Trying hypervisor sub-driver)
DEBUG: xen_unified.c: xenUnifiedOpen (Activated hypervisor sub-driver)
DEBUG: xen_unified.c: xenUnifiedOpen (Trying XenD sub-driver)
DEBUG: xen_unified.c: xenUnifiedOpen (Activated XenD sub-driver)
...snip...

One other problem I've noticed is a race condition on the @introduceDomain
watch. The watch fires as soon as the domain ID is added to xenstore.
We then query the name & uuid, but occassionally we query before XenD has
had a chance to fill them in.

I think that upon failure, we'll have to add a timer callback to retry
the lookup after 500ms, to take account of possible race. I'm going to
give this a try...

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