Re: nfsroot protocol version

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Apr 21, 2015, at 4:37 AM, Mason <slash.tmp@xxxxxxx> wrote:

> Hello,
> 
> On 01/04/2015 11:55, Mason wrote:
> 
>> My embedded system is supposed to mount the rootfs via NFS.
>> https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
>> 
>> So I set these options in my kernel .config
>> 
>> CONFIG_IP_PNP=y
>> CONFIG_IP_PNP_DHCP=y
>> CONFIG_ROOT_NFS=y
>> CONFIG_NFS_V4=y
>> 
>> But it didn't work, the system would panic after a long time out
>> (around 95 seconds)
>> 
>> [   98.567037] VFS: Unable to mount root fs via NFS, trying floppy.
>> [   98.573238] Freeing unused kernel memory: 144K (c0332000 - c0356000)
>> [   98.579698] Kernel panic - not syncing: No working init found.
>>     Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
>> 
>> I then enabled NFSv2 and NFSv3, and then it worked.
>> 
>> When I was debugging the problem, I ran across NFS_DEF_OPTIONS
>> in fs/nfs/nfsroot.c
>> 
>> #define NFS_DEF_OPTIONS        "vers=2,udp,rsize=4096,wsize=4096"
>> 
>> IIUC, we are explicitly requesting NFSv2?
>> 
>> Would that explain why it fails when NFSv2 support is not compiled in?
>> 
>> Would it make sense to use version 3?
>> (So NFSv2 is not needed just to load the rootfs.)
> 
> I saw commit 4251c94833aa (NFS: Revert NFSROOT default mount options)
> which states:
> 
>    Last fall we removed the ad hoc mount option parser in
>    fs/nfs/nfsroot.c in favor of using the main parser in fs/nfs/super.c
>    (see commit 56463e50 "NFS: Use super.c for NFSROOT mount option
>    parsing").  That commit changed the default NFSROOT mount options to
>    be the same as those employed by user space mounts.
>        As it turns out, these new default mount options are not tolerated by
>    many embedded systems.  So far these problems have been due to
>    specific behavior of certain embedded NICs.  The NFS community does
>    not have such hardware on hand for running tests.
>        Commit 53d47375 recently introduced a clean way to specify default
>    mount options for NFSROOT, so we can now easily restore the
>    traditional defaults for NFSROOT:
>           vers=2,udp,rsize=4096,wsize=4096
>        This should revert the new default NFSROOT mount options introduced
>    with commit 56463e50.
> 
> I guess this explains why vers=3 is not the default?
> 
> I'm now wondering how to override the mount options on the boot command
> line. Looking more closely at commit 53d473758053 (NFS: NFSROOT should
> default to "proto=udp") nothing jumps out at me.
> 
> My current boot command line is
> "root=/dev/nfs ip=:::::eth0:dhcp rdinit=/none console=ttyS0,115200 mem=512M earlyprintk"
> 
> Looking at the documentation
> https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
> I don't see where the protocol version is specified.
> 
> Where am I supposed to add the vers=3 option?

Let’s try that again.

Specifying “vers=3” in the nfs-options section of the nfsroot= boot
parameter should work.

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



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux