Bug 1287312

Summary: rdma rules still missing usnic_verbs rule to launch rdma service
Product: Red Hat Enterprise Linux 7 Reporter: Ajay Kulkarni <ajaykulk>
Component: rdmaAssignee: Doug Ledford <dledford>
Status: CLOSED NOTABUG QA Contact: Infiniband QE <infiniband-qe>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 7.3CC: ajaykulk, benve, jsquyres
Target Milestone: rc   
Target Release: 7.3   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-12-02 16:45:52 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 Ajay Kulkarni 2015-12-01 23:09:43 UTC
Description of problem:

The issue mentioned in the bug 1094538 still exists in 7.2. The file usr/lib/udev/rules.d/98-rdma.rules should have the following rule:


SUBSYSTEM=="module", KERNEL=="usnic_verbs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="rdma.service"


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:
rdma service should be launched if the usnic_verbs kernel module present

Additional info:
refer to bug 1094538

Comment 1 Doug Ledford 2015-12-02 16:45:52 UTC
This is the wrong order of execution.  The rdma service loads the usnic_verbs kernel module, not the other way around.  In order to trigger the rdma service, we use the presence of the enic module.  This is because the only thing reliably loaded based upon PCI IDs is the enic module.  If you check the udev rules file for rdma, you see that it includes a line for starting the service in the presence of the enic module.  If you check the rdma start script, you will see this snippet:

if is_module enic -a ! is_module usnic_verbs; then
  load_modules usnic_verbs
  RC+=$?
fi

As you can see, the rdma service loads the usnic_verbs module, so starting the rdma service on the presence of the usnic_verbs module would create a circular dependency and cause the init sequence to fail.