Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 2279977

Summary: "Failed to set QoS type linux-noop on port vhuID: Operation not supported" errors are logged in RHOSP 17.1 DPDK environment
Product: Red Hat OpenStack Reporter: Alex Stupnikov <astupnik>
Component: openstack-neutronAssignee: Miro Tomaska <mtomaska>
Status: CLOSED ERRATA QA Contact: Miguel Angel Nieto <mnietoji>
Severity: medium Docs Contact:
Priority: high    
Version: 17.1 (Wallaby)CC: chrisw, jjoyce, jschluet, mariel, mtomaska, scohen, slinaber, smooney, tvignaud, xili, ykarel
Target Milestone: z4Keywords: Triaged
Target Release: 17.1   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: openstack-neutron-18.6.1-17.1.20240726190742.85ff760.el9ost Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-11-21 09:40:24 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Alex Stupnikov 2024-05-10 10:27:22 UTC
Description of problem:
The following errors are flooding /var/log/openvswitch/ovs-vswitchd.log logs of DPDK compute nodes:
netdev_dpdk|ERR|Failed to set QoS type linux-noop on port vhue4cab573-c4: Operation not supported

It looks related to fix for bug #2174632 and may affect newer RHOSP branches as well.

Version-Release number of selected component (if applicable):
Red Hat OpenStack Platform release 17.1.2 (Wallaby)

How reproducible:
Customer started instances on DPDK compute node. Around 4 reported messages are logged for each port once in a while: there could be few seconds between batches, or few minutes.

Steps to Reproduce:
Please see description.

Actual results:
QoS type linux-noop is configured for VHU ports, so errors are logged by OVS because interface doesn't belong to kernel datapath.

Expected results:
Linux QoS modes are not set for DPDK intefaces.

Additional info:
sosreport-computeovsdpdksriov-1-03794202-2024-05-10-djydnat contains relevant messages in its logs.

Comment 2 smooney 2024-05-10 11:10:24 UTC
reviewing the code we explictly skip ovs-dpdk

def supports_tc_qdisc(self, vif) -> bool:
        if self._get_vif_datapath_type(vif) != constants.OVS_DATAPATH_SYSTEM:
            return False
        if sys.platform == constants.PLATFORM_WIN32:
            return False

        return True

https://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L181-L187

and we have functional test coverage to ensure that

  def test_create_ovs_vif_port(self):
        port_name = 'port2-' + self.interface
        iface_id = 'iface_id'
        mac = 'ca:fe:ca:fe:ca:fe'
        instance_id = uuidutils.generate_uuid()
        interface_type = constants.OVS_VHOSTUSER_INTERFACE_TYPE
        vhost_server_path = '/fake/path'
        mtu = 1500
        self._add_bridge(self.brname)
        self.addCleanup(self._del_bridge, self.brname)

        self.ovs.create_ovs_vif_port(self.brname, port_name, iface_id, mac,
                                     instance_id, mtu=mtu,
                                     interface_type=interface_type,
                                     vhost_server_path=vhost_server_path,
                                     tag=2000)

        expected_external_ids = {'iface-status': 'active',
                                 'iface-id': iface_id,
                                 'attached-mac': mac,
                                 'vm-uuid': instance_id}
        self._check_parameter('Interface', port_name, 'external_ids',
                              expected_external_ids)
        self._check_parameter('Interface', port_name, 'type', interface_type)
        expected_vhost_server_path = {'vhost-server-path': vhost_server_path}
        self._check_parameter(
            'Interface', port_name, 'options', expected_vhost_server_path
        )
        self._check_parameter('Port', port_name, 'tag', 2000)
        self._check_parameter('Port', port_name, 'qos', [])


https://github.com/openstack/os-vif/blob/c0d101aa81cff200e1db2a0746598b72e26748e4/vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py#L109C1-L130C60

the os-vif functional test actually create ports on a real ovs bridge and use the ovs cli to confirm that the operations were performed correctly

so that implies that the datapath type is not set to netdev or was set to a different value at some point in the past.

Comment 27 errata-xmlrpc 2024-11-21 09:40:24 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (RHOSP 17.1.4 bug fix and enhancement advisory), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2024:9974