[PATCH] Change the virtual NICs limit for the ESX driver

Michal Privoznik mprivozn at redhat.com
Wed Jul 8 15:47:44 UTC 2020


On 7/8/20 5:37 PM, Bastien Orivel wrote:
> 
> 
> On 08/07/2020 17:32, Michal Privoznik wrote:
>> On 7/7/20 4:04 PM, Bastien Orivel wrote:
>>> Since the ESX virtual hardware version 4.0, virtual machines support up
>>> to 10 virtual NICs instead of 4 previously. This changes the limit
>>> accordingly based on the provided `virtualHW.version`.
>>>
>>> Signed-off-by: Bastien Orivel <bastien.orivel at diateam.net>
>>> ---
>>>    src/vmx/vmx.c | 20 ++++++++++++++------
>>>    src/vmx/vmx.h |  2 +-
>>>    2 files changed, 15 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
>>> index 67bbe27fde..afe6fe0a1a 100644
>>> --- a/src/vmx/vmx.c
>>> +++ b/src/vmx/vmx.c
>>> @@ -290,7 +290,7 @@ def->fss[0]...                    <=>
>>> sharedFolder0.present = "true"
>>>   
>>> ################################################################################
>>>    ## nets
>>> ########################################################################
>>>    -                                        ethernet[0..3] ->
>>> <controller>
>>> +                                        ethernet[0..9] -> <controller>
>>>                                              ethernet0.present =
>>> "true"              # defaults to "false"
>>>                                            ethernet0.startConnected =
>>> "true"       # defaults to "true"
>>> @@ -3376,7 +3376,7 @@ virVMXFormatConfig(virVMXContext *ctx,
>>> virDomainXMLOptionPtr xmlopt, virDomainDe
>>>          /* def:nets */
>>>        for (i = 0; i < def->nnets; ++i) {
>>> -        if (virVMXFormatEthernet(def->nets[i], i, &buffer) < 0)
>>> +        if (virVMXFormatEthernet(def->nets[i], i, &buffer,
>>> virtualHW_version) < 0)
>>>                goto cleanup;
>>>        }
>>>    @@ -3732,15 +3732,23 @@ virVMXFormatFileSystem(virDomainFSDefPtr
>>> def, int number, virBufferPtr buffer)
>>>      int
>>>    virVMXFormatEthernet(virDomainNetDefPtr def, int controller,
>>> -                     virBufferPtr buffer)
>>> +                     virBufferPtr buffer, int virtualHW_version)
>>>    {
>>>        char mac_string[VIR_MAC_STRING_BUFLEN];
>>>        unsigned int prefix, suffix;
>>>    -    if (controller < 0 || controller > 3) {
>>> +    /*
>>> +     * Machines older than virtualHW.version = 7 (ESXi 4.0) only
>>> support up to 4
>>> +     * virtual NICs. New machines support up to 10.
>>> +     */
>>> +    int controller_limit = 4;
>>> +    if (virtualHW_version >= 7)
>>> +        controller_limit = 10;
>>> +
>>> +    if (controller < 0 || controller > controller_limit) {
>>
>> This allows 4 nics for the old ESX version (if controller = 4 then
>> this would be reported, but with your patch it isn't anymore), and 11
>> nics for the new EXS (if controller = 10, then this again is not
>> caught properly). We need to decrease those 4 and 10 and ..
>>
> Oof. Nice catch.
>>>            virReportError(VIR_ERR_INTERNAL_ERROR,
>>> -                       _("Ethernet controller index %d out of [0..3]
>>> range"),
>>> -                       controller);
>>> +                       _("Ethernet controller index %d out of
>>> [0..%d] range"),
>>> +                       controller, controller_limit - 1);
>>
>> .. drop this -1.
>>
>> No need to send v2, I can fix it just before pushing, if you agree
>> with suggested change.
> Sounds good to me.

Done.

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

and pushed. Congratulations on your first libvirt contribution!

Michal




More information about the libvir-list mailing list