Description
Hi,
Similar to #751 if the number of VFs are increased over 108 then the buffer in pyroute2 becomes too small.
<180>2021-05-31T16:35:00.707793+02:00 compute-0-4 neutron-sriov-nic-agent[33389]: 2021-05-31 16:35:00.706 455 WARNING pyroute2.netlink [-] Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pyroute2/netlink/init.py", line 1345, in _ft_decode_generic
self.decode_nlas(offset)
File "/usr/lib/python3.6/site-packages/pyroute2/netlink/init.py", line 1470, in decode_nlas
offset)
struct.error: unpack_from requires a buffer of at least 4 bytes
<179>2021-05-31T16:35:00.731008+02:00 compute-0-4 neutron-sriov-nic-agent[33389]: 2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent [req-34c81c8f-7a7a-4a75-8ce9-c2b91cfdba21
] Error in agent loop. Devices info: {}: TypeError: can not serialize 'error' object
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent Traceback (most recent call last):
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py", line 472, in daemon_loop
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent device_info = self.scan_devices(devices, updated_devices_copy)
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/osprofiler/profiler.py", line 160, in wrapper
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent result = f(*args, **kwargs)
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py", line 242, in scan_devices
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent curr_devices = self.eswitch_mgr.get_assigned_devices_info()
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py", line 344, in get_assigned_device
s_info
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent for device in embedded_switch.get_assigned_devices_info():
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py", line 186, in get_assigned_device
s_info
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent mac = self.get_pci_device(pci_slot)
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py", line 297, in get_pci_device
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent macs = self.pci_dev_wrapper.get_assigned_macs([vf_index])
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/plugins/ml2/drivers/mech_sriov/agent/pci_lib.py", line 46, in get_assigned_macs
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent vfs = ip.link.get_vfs()
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/neutron/agent/linux/ip_lib.py", line 516, in get_vfs
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent return privileged.get_link_vfs(self.name, self._parent.namespace)
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/oslo_privsep/priv_context.py", line 247, in _wrap
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent return self.channel.remote_call(name, args, kwargs)
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent File "/usr/lib/python3.6/site-packages/oslo_privsep/daemon.py", line 224, in remote_call
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent raise exc_type(*result[2])
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent TypeError: can not serialize 'error' object
2021-05-31 16:35:00.707 6 ERROR neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent
Doubling the DEFAULT_RCVBUF in pyroute2 solves the issue in our environment with 127 VFs.
Activity