[libvirt PATCH v3 2/8] util: add stub driver name to virPCIDevice object

Laine Stump laine at redhat.com
Wed Aug 23 20:50:33 UTC 2023


On 8/23/23 3:52 AM, Michal Prívozník wrote:
> On 8/21/23 21:32, Laine Stump wrote:
>> There can be many different drivers that are of the type "VFIO", so
>> add the driver name to the object and allow getting/setting it.
>>
>> Signed-off-by: Laine Stump <laine at redhat.com>
>> ---
>>   src/libvirt_private.syms |  2 ++
>>   src/util/virpci.c        | 16 ++++++++++++++++
>>   src/util/virpci.h        |  3 +++
>>   3 files changed, 21 insertions(+)
>>
> 
>> diff --git a/src/util/virpci.c b/src/util/virpci.c
>> index 88a020fb86..103bc4254e 100644
>> --- a/src/util/virpci.c
>> +++ b/src/util/virpci.c
> 
>> @@ -1580,6 +1583,19 @@ virPCIDeviceGetStubDriverType(virPCIDevice *dev)
>>       return dev->stubDriverType;
>>   }
>>   
>> +void
>> +virPCIDeviceSetStubDriverName(virPCIDevice *dev,
>> +                                   const char *driverName)
>> +{
>> +    dev->stubDriverName = g_strdup(driverName);
>> +}
> 
> 
> I think it's worth freeing dev->stubDriverName before setting another
> one. Please consider squashing this in:
> 
> diff --git i/src/util/virpci.c w/src/util/virpci.c
> index 3f207a24f3..15e53e6749 100644
> --- i/src/util/virpci.c
> +++ w/src/util/virpci.c
> @@ -1586,8 +1586,9 @@ virPCIDeviceGetStubDriverType(virPCIDevice *dev)
> 
>   void
>   virPCIDeviceSetStubDriverName(virPCIDevice *dev,
> -                                   const char *driverName)
> +                              const char *driverName)
>   {
> +    g_free(dev->stubDriverName);
>       dev->stubDriverName = g_strdup(driverName);
>   }

Sure, that seems prudent.

> 
> 
> And just a thought (maybe it was covered in earlier discussions, maybe
> it'll be covered in next patches) - what about the following scenario:
> 
> virPCIDeviceSetStubDriverType(&dev, VIR_PCI_STUB_DRIVER_VFIO);
> virPCIDeviceSetStubDriverName(&dev, "blah");
> 
> Should the latter reset dev->stubDriverType to _NONE? Similarly, what if
> the two are reversed? But I guess we can always fine tune this later.

Although the two settings are conceptually intertwined, I think the APIs 
should be orthogonal, with the setting of one not affecting the other; 
otherwise people would get confused about which one should come first 
and/or be surprised when it didn't do what they wanted.




More information about the libvir-list mailing list