[libvirt] [PATCH v2 01/10] driver: allow override of connection for secondary drivers

John Ferlan jferlan at redhat.com
Fri Feb 16 01:14:26 UTC 2018



On 02/15/2018 11:50 AM, Daniel P. Berrangé wrote:
> When the test suite is running, we don't want to be triggering the
> startup of daemons for the secondary drivers. Thus we must provide a way
> to set a custom connection for the secondary drivers, to override the
> default logic which opens a new connection.
> 
> This will also be useful for code where we have a whole set of separate
> functions calls all needing the secret driver. Currently the connection
> to the secret driver is opened & closed many times in quick
> succession. This will allow us to pre-open a connection temporarily,
> improving the performance of startup.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/driver.c             | 172 +++++++++++++++++++++++++++++++++++++++++++++--
>  src/driver.h             |   7 ++
>  src/libvirt_private.syms |   6 ++
>  3 files changed, 179 insertions(+), 6 deletions(-)
> 
> diff --git a/src/driver.c b/src/driver.c
> index a6a7ff925a..5e3a2a7d62 100644
> --- a/src/driver.c
> +++ b/src/driver.c
> @@ -28,6 +28,7 @@
>  #include "viralloc.h"
>  #include "virfile.h"
>  #include "virlog.h"
> +#include "virthread.h"
>  #include "configmake.h"
>  
>  VIR_LOG_INIT("driver");
> @@ -168,32 +169,191 @@ virDriverLoadModule(const char *name,
>  
>  /* XXX unload modules, but we can't until we can unregister libvirt drivers */
>  
> +virThreadLocal connectInterface;
> +virThreadLocal connectNetwork;
> +virThreadLocal connectNWFilter;
> +virThreadLocal connectNodeDev;
> +virThreadLocal connectSecret;
> +virThreadLocal connectStorage;
> +
> +static int virConnectCacheOnceInit(void)

Could all the new defs use the "newer" model:

static int
virConnect...(void)

> +{
> +    if (virThreadLocalInit(&connectInterface,  NULL) < 0)

There's extra spaces before the 2nd arg in all of these.

> +        return -1;
> +    if (virThreadLocalInit(&connectNetwork,  NULL) < 0)
> +        return -1;
> +    if (virThreadLocalInit(&connectNWFilter,  NULL) < 0)
> +        return -1;
> +    if (virThreadLocalInit(&connectNodeDev,  NULL) < 0)
> +        return -1;
> +    if (virThreadLocalInit(&connectSecret,  NULL) < 0)
> +        return -1;
> +    if (virThreadLocalInit(&connectStorage,  NULL) < 0)
> +        return -1;
> +    return 0;
> +}
> +
> +VIR_ONCE_GLOBAL_INIT(virConnectCache);
> +

[...]

Same for all the virSetConnect* defs too.

Could also go w/ 2 empty lines between each if you feel so inclined.

> +int virSetConnectInterface(virConnectPtr conn)
> +{
> +    if (virConnectCacheInitialize() < 0)
> +        return -1;
> +
> +    VIR_DEBUG("Override interface connection with %p", conn);
> +    return virThreadLocalSet(&connectInterface, conn);
> +}
> +

[...]

Reviewed-by: John Ferlan <jferlan at redhat.com>

John




More information about the libvir-list mailing list