[ovs-dev] [PATCH] dpif-netdev: Fail port addition if reconfiguration failed.

Ilya Maximets i.maximets at samsung.com
Thu Aug 29 15:47:38 UTC 2019



On 26.08.2019 19:11, Stokes, Ian wrote:
> 
> On 8/26/2019 3:12 PM, Ilya Maximets wrote:
>> On 23.07.2019 14:20, Ilya Maximets wrote:
>>> If the port was destroyed during the initial reconfiguration, we should
>>> report an error to the upper layers. Otherwise, successful addition of
>>> the port will be logged and upper layers will continue to configure
>>> this port. For example, the 'dpif' layer will try to initilaize flow
>>> API for this device.
>>>
>>> Fix that by checking for port existence after reconfiguration. We can't
>>> get the real error code here, so let's assume EINVAL. 'ovs-vsctl' will
>>> tell the user to check the logs for a real reason anyway.
>>>
>>> Fixes: e32971b8ddb4 ("dpif-netdev: Centralized threads and queues handling code.")
>>> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
>>> ---
>> Any thoughts on this?
>>
>> Best regards, Ilya Maximets.
> 
> 
> Good catch Ilya,
> 
> 
> to my mind this seems reasonable, if reconfiguration fails then the port will be removed from the port list associated with the datapath in question, seems a fair way to assess whether re-config was successful.
> 
> 
> Tests fine on my side.
> 
> 
> Acked
> 
> Ian

Thanks, Ian! I applied this to master and branch-2.12.

I'm thinking about further backporting. Suggestions are welcome.

I have another bug fix locally that depends on this patch, so I, probably,
will backport this patch along with that later fix.

Best regards, Ilya Maximets.


> 
>>
>>
>>>   lib/dpif-netdev.c | 3 ++-
>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
>>> index d0a1c58ad..75d85b2fd 100644
>>> --- a/lib/dpif-netdev.c
>>> +++ b/lib/dpif-netdev.c
>>> @@ -1862,7 +1862,8 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
>>>         reconfigure_datapath(dp);
>>>   -    return 0;
>>> +    /* Check that port was successfully configured. */
>>> +    return dp_netdev_lookup_port(dp, port_no) ? 0 : EINVAL;
>>>   }
>>>     static int
>>>
> 
> 


More information about the dev mailing list