Bug 2215921

Summary: mount.nfs does not respect Defaultproto from nfsmount.conf
Product: Red Hat Enterprise Linux 8 Reporter: Lukas Herbolt <lherbolt>
Component: nfs-utilsAssignee: Steve Dickson <steved>
Status: NEW --- QA Contact: Yongcheng Yang <yoyang>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 8.8CC: dwysocha, xzhou
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 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 Lukas Herbolt 2023-06-19 12:10:05 UTC
Description of problem:
Setting Defaultproto=rdma does try the rdma protocol first.

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


How reproducible:
every time

Steps to Reproduce:

On client and server:
1. dnf install iproute libibverbs libibverbs-utils infiniband-diags rdma-core
2. modprobe siw
3. rdma link add siw0 type siw netdev eth0
4. rdma link show

On client:
[root@rhel-8-1 ~]# grep -v "^#" /etc/nfsmount.conf 
[ NFSMount_Global_Options ]
Defaultproto=rdma
Port=20049
[root@rhel-8-1 ~]# mount.nfs -vvvv   10.0.212.240:/mnt/nfsordma /mnt/nfsrdmaclient/
mount.nfs: timeout set for Mon Jun 19 08:00:34 2023
mount.nfs: trying text-based options 'port=20049,vers=4.2,addr=10.0.212.240,clientaddr=10.0.215.113'
mount.nfs: mount(2): Connection reset by peer
mount.nfs: Connection reset by peer

On server:
[root@rhel-8 ~]# grep -v "#" /etc/nfs.conf 
[general]
[nfsrahead]
[exportfs]
[gssd]
use-gss-proxy=1
[lockd]
[mountd]
[nfsdcld]
[nfsdcltrack]
[nfsd]
 vers3=y
 vers4=y
 vers4.0=y
 vers4.1=y
 vers4.2=y
 rdma=y
 rdma-port=20049
[statd]
[sm-notify]


Actual results:
Client tries to use TCP connection instead of RDMA

Expected results:
Client start with RDMA and if that does not work it continues with TCP. As per 
the option description:

# Network Protocol [udp,tcp,rdma] (Note: values are case sensitive)
# This defines the default network protocol which will
# be used to start the negotiation with the server.
Defaultproto=rdma


Additional info: