mount - unknown option rdma

Chuck Lever chuck.lever at oracle.com
Fri Feb 8 11:46:16 EST 2008


On Feb 8, 2008, at 10:15 AM, Shirish Pargaonkar wrote:
> On 2/8/08, James Lentini <jlentini at netapp.com> wrote:
>>
>>
>> On Thu, 7 Feb 2008, Shirish Pargaonkar wrote:
>>
>>> If I use mount command as stated in the document
>>>  http://nfs-rdma.sourceforge.net/Documents/README
>>> this is what I get.
>>>
>>> client:~ # mount 1.2.3.131:/ /mnt -i -o rdma,port=2050
>>> unknown nfs mount option: rdma
>>>
>>> client:~ # mount 1.2.3.131:/ /mnt -o rdma,port=2050
>>> mount.nfs: Unsupported nfs mount option: rdma
>>>
>>>
>>> client:# /sbin/mount.nfs -V
>>> mount.nfs (linux nfs-utils 1.1.1)
>>
>> That's a mistake in the documentation. You should run:
>>
>>  mount.nfs 1.2.3.131:/ /mnt -i -o rdma,port=2050
>>
>>> With -i option, /sbin/mount.nfs is not called.  I do not where is  
>>> the source
>>> for the binary mount (/bin/mount) and how the message
>>>   unknown nfs mount option: rdma
>>> is spit out. I see that message in file nfs4mount.c.
>>> Not sure how did it figure out that it is nfs type of filesystem  
>>> that is
>>> being mounted without specifying -t option, I guess nfs code is
>>> built in the mount command.
>>
>> mount can figure it out automatically, but the -i option instructs it
>> not to call /sbin/mount.<filesystem> even if it exists. See mount(8)
>> for details.
>>
>>> Without -i mount.nfs is called which spits out the message
>>>   mount.nfs: Unsupported nfs mount option: rdma
>>> and the mount.nfs (/sbin/mount.nfs) version is 1.1.1
>>>
>>> So looks like neither /bin/mount not /sbin/mount.nfs recognize  
>>> rdma option.
>>
>> What was the output of?
>>
>>  mount.nfs 1.2.3.131:/ /mnt -i -o rdma,port=2050
>>
>>> ethernet interfaces ping and ib interfaces ping.  I can ssh from
>>> server to client on either interfaces.  So I am not sure it is a
>>> connectivity problem.
>>
>
> The output
>
> client:~ # mount.nfs 1.2.3.131:/ /mnt -i -o rdma,port=2050
> mount.nfs: Connection timed out
>
> Without -i
>
> client:~ # mount.nfs 1.2.3.131:/ /mnt -o rdma,port=2050
> mount.nfs: Unsupported nfs mount option: rdma
>
> If we are invoking mount.nfs explicitly, is -i option needed?

/sbin/mount and /sbin/mount.nfs are two entirely different programs.

/sbin/mount is the normal administrative mount command which users  
invoke to manage their file system hierarchy.  /sbin/mount.nfs is a  
"mount subcommand" specifically for the nfs and nfs4 file systems.   
While /sbin/mount is packaged in the utils-linux RPM, and is a  
generic base user O/S command, /sbin/mount.nfs is packaged in the nfs- 
utils RPM, which is maintained by us.

These mount subcommands are not normally invoked directly by users.   
The /sbin/mount command invokes them to handle mount requests for  
certain specific file systems (NFS, NTFS, CIFS, and OCFS2 are  
examples).  Historically, /sbin/mount handled NFS mount operations  
itself, but to make it easier to add new NFS features, we have  
transitioned to using a subcommand maintained directly by the NFS  
community to handle NFS mounts.

The /sbin/mount command and the /sbin/mount.nfs subcommand use  
different command line options that are not compatible.  This is  
usually OK, because as I said above, the subcommands are not normally  
exposed to users.  Among other differences, the "-i" option means  
different things to the /sbin/mount command and the /sbin/mount.nfs  
subcommand.

Now that we have a separate mount subcommand for NFS, we have also  
transitioned away from passing mount options to the mount(2) system  
call via a binary blob and to an API that uses a C string instead.   
For testing the new C string API before we make the change permanent,  
the /sbin/mount.nfs command uses the "-i" command line option to  
force /sbin/mount.nfs to pass mount options in the new C string format.

Because RDMA is such a new feature, support for it was added to the C  
string option parser, but not to the legacy binary API.  So for now,  
you need to use the /sbin/mount.nfs subcommand *and* specify "-i" to  
force passing mount options to the kernel via a C string.

Eventually, /sbin/mount.nfs will always pass mount options to the  
kernel using a C string.  At that point, to specify "rdma" you will  
use the /sbin/mount command normally, it will invoke the /sbin/ 
mount.nfs subcommand, and the subcommand will automatically use a C  
string to pass the mount options to the kernel.  Then, the "rdma"  
mount option will be recognized as expected.  The next official  
release of nfs-utils running on kernels 2.6.24 and later will work  
this way.

The "connection timed out" error is not a mount option parsing  
error.  It is reporting a problem trying to mount the server with RDMA.

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com


More information about the NFSv4 mailing list