On 19.06.2019 9:35, Eelco Chaudron wrote:
> 
> 
> On 19 Jun 2019, at 0:28, William Tu wrote:
> 
>>>
>>> I guess, this crash caused by trying to destroy unallocated queue.
>>>
>>> Following change could help:
>>> ---
>>> diff --git a/lib/netdev-afxdp.c b/lib/netdev-afxdp.c
>>> index a6543e8f5..6e1431dce 100644
>>> --- a/lib/netdev-afxdp.c
>>> +++ b/lib/netdev-afxdp.c
>>> @@ -249,7 +249,7 @@ xsk_configure_all(struct netdev *netdev)
>>>      ifindex = linux_get_ifindex(netdev_get_name(netdev));
>>>
>>>      n_rxq = netdev_n_rxq(netdev);
>>> -    dev->xsks = xmalloc(n_rxq * sizeof(struct xsk_socket_info *));
>>> +    dev->xsks = xzalloc(n_rxq * sizeof(struct xsk_socket_info *));
>>>
>>>      /* configure each queue */
>>>      for (i = 0; i < n_rxq; i++) {
>>> ---
>>>
>>> This should prevent OVS from crash, however, I don't know why socket
>>> creation fails in your case.
>>>
>> Hi Ilya,
>>
>> Thanks, I will add this into my next version.
>>
>> @Eelco
>> When using ovs-ctl restart, it still fails, but this is because userspace
>> datapath need extra "--cleanup" argument, s.t like
>> #ovs-appctl -t ovs-vswitchd --cleanup
>>
>> We should add it to stop_daemon() at utilities/ovs-lib.in
> 
> It’s not there for a reason, i.e. they do not want interfaces to be removed 
> on OVS restart.

ovs-ctl is optimized for kernel datapath, and yes, it shouldn't cleanup on
restart if kernel datapath is there. But I don't see any reason to stop
the deamon without cleaning the userspace. I'm working on a patch to clean
up dpif-netdev regardless of passed 'cleanup' option.

> 
> The only thing OVS should do is not to crash ;) Or maybe try to remove the 
> program when it fails to add it, or an option to force program load as in the 
> XDP examples.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to