[libvirt] [PATCH v2] add func to set shared drivers after libvirtd init

Mikhail Feoktistov mfeoktistov at virtuozzo.com
Fri Apr 8 07:22:13 UTC 2016


On 07.04.2016 19:28, Maxim Nestratov wrote:
> 19.11.2015 15:22, Mikhail Feoktistov пишет:
>> Diff from v1:
>> Remove vz prefix from the title of this letter. Because this is the 
>> common case
>> for all drivers in libvirt.
>>
>> Description:
>> Built-in drivers in libvirt are initialized before libvirtd 
>> initialization.
>> Libvirt loads shared drivers on libvirtd initialization step.
>> For built-in drivers we can't set shared drivers, because they are 
>> not initialized yet.
>> This patch adds function to set shared drivers after libvirtd init.
>> ---
>>   daemon/libvirtd.c        |  4 ++++
>>   src/libvirt.c            | 41 
>> +++++++++++++++++++++++++++++++++++++++++
>>   src/libvirt_internal.h   |  1 +
>>   src/libvirt_private.syms |  1 +
>>   4 files changed, 47 insertions(+)
>>
>> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
>> index 250094b..aac1826 100644
>> --- a/daemon/libvirtd.c
>> +++ b/daemon/libvirtd.c
>> @@ -431,6 +431,10 @@ static void daemonInitialize(void)
>>       bhyveRegister();
>>   # endif
>>   #endif
>> +# ifdef WITH_VZ
>> +    virAssignSharedDrivers("vz");
>> +    virAssignSharedDrivers("Parallels");
>> +# endif
>>   }
>>     diff --git a/src/libvirt.c b/src/libvirt.c
>> index 25a0040..1763be7 100644
>> --- a/src/libvirt.c
>> +++ b/src/libvirt.c
>> @@ -1433,3 +1433,44 @@ virTypedParameterValidateSet(virConnectPtr conn,
>>       }
>>       return 0;
>>   }
>> +
>> +/**
>> + * virAssignSharedDrivers:
>> + * @name: name of connection driver
>> + *
>> + * This function fills in any empty pointers for shared drivers
>> + * in connect driver structure
>> + *
>> + * Returns 0 in case of success, -1 in case of error
>> +*/
>> +int
>> +virAssignSharedDrivers(const char *name)
>> +{
>> +    size_t i;
>> +
>> +    if (name == NULL) {
>> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> +                       _("Driver name must be specified"));
>> +        return -1;
>> +    }
>> +
>> +    for (i = 0; i < virConnectDriverTabCount; i++) {
>> +        if (STREQ(virConnectDriverTab[i]->hypervisorDriver->name, 
>> name)) {
>> +            if (virConnectDriverTab[i]->interfaceDriver == NULL)
>> +                virConnectDriverTab[i]->interfaceDriver = 
>> virSharedInterfaceDriver;
>> +            if (virConnectDriverTab[i]->networkDriver == NULL)
>> +                virConnectDriverTab[i]->networkDriver = 
>> virSharedNetworkDriver;
>> +            if (virConnectDriverTab[i]->nodeDeviceDriver == NULL)
>> +                virConnectDriverTab[i]->nodeDeviceDriver = 
>> virSharedNodeDeviceDriver;
>> +            if (virConnectDriverTab[i]->nwfilterDriver == NULL)
>> +                virConnectDriverTab[i]->nwfilterDriver = 
>> virSharedNWFilterDriver;
>> +            if (virConnectDriverTab[i]->secretDriver == NULL)
>> +                virConnectDriverTab[i]->secretDriver = 
>> virSharedSecretDriver;
>> +            if (virConnectDriverTab[i]->storageDriver == NULL)
>> +                virConnectDriverTab[i]->storageDriver = 
>> virSharedStorageDriver;
>> +            break;
>> +       }
>> +    }
>> +
>> +    return 0;
>> +}
>> diff --git a/src/libvirt_internal.h b/src/libvirt_internal.h
>> index 1313b58..2a7227b 100644
>> --- a/src/libvirt_internal.h
>> +++ b/src/libvirt_internal.h
>> @@ -289,4 +289,5 @@ virTypedParameterValidateSet(virConnectPtr conn,
>>                                virTypedParameterPtr params,
>>                                int nparams);
>>   +int virAssignSharedDrivers(const char *name);
>>   #endif
>> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>> index a835f18..a0fcdf5 100644
>> --- a/src/libvirt_private.syms
>> +++ b/src/libvirt_private.syms
>> @@ -943,6 +943,7 @@ virFDStreamSetInternalCloseCb;
>>       # libvirt_internal.h
>> +virAssignSharedDrivers;
>>   virConnectSupportsFeature;
>>   virDomainMigrateBegin3;
>>   virDomainMigrateBegin3Params;
>
> It looks like this patch is not necessary anymore as far as changes 
> proposed in the series [1] seem to be the better way to use shared 
> drivers.
>
> Maxim
>
> [1] https://www.redhat.com/archives/libvir-list/2016-March/msg01357.html
I agree. Please, do not push this patch.




More information about the libvir-list mailing list