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